注册 登录
编程论坛 VFP论坛

请教:ShellExecute命令如何支持字符长度超过255长度时不报错的方法

laibinhua 发布于 2025-05-12 10:19, 216 次点击
请教大佬,用下面方法调用默认浏览器打开一个网址,当字符超出255长时就会报错,请求解决方法
lfilename=ALLTRIM(thisform.edit4.Value)
IF 'http'$lfilename=.t.
  DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING,STRING lpszFile,STRING,STRING,INTEGER
  owjmc=lfilename
  thisform.text1.Value=LEN(owjmc)
  if empty(owjmc)
     return
  ENDIF
  ShellExecute(0,"open","&owjmc",0,0,1)
ENDIF
测试字符串如下:
https://item.*3.0%EF%BC%8810.9%E7%BA%A7%EF%BC%89&skuId=3828658802064&spm=a21n57.1.hoverItem.9&utparam=%7B%22aplus_abtest%22%3A%2214fdba949766f512ee012df4be4f70d0%22%7D&xxc=taobaoSearch
3 回复
#2
laibinhua2025-05-12 10:26
回复 楼主 laibinhua
网上找了个方法也不行
lfilename=ALLTRIM(this.Parent.text4.Value)
IF 'http'$lfilename=.t.
  * 声明 Unicode 版本的 ShellExecuteW
  DECLARE INTEGER ShellExecuteW IN shell32.DLL ;
    INTEGER hwnd, ;
    STRING lpOperation, ;
    STRING lpFile, ;
    STRING lpParameters, ;
    STRING lpDirectory, ;
    INTEGER nShowCmd
      
  owjmc=lfilename
  thisform.text1.Value=LEN(owjmc)
  if empty(owjmc)
     return
  ENDIF
  * 调用 Unicode 版本
  ShellExecuteW(0, "open", owjmc, "", "", 1)
ENDIF
#3
csyx2025-05-12 11:29
我就不明白了,为何非要画蛇添足的用宏替换 &,直接用变量不是简单的多?
一楼代码只要去掉 & 应该就行:  ShellExecute(0,"open", owjmc, 0,0,1)
#4
laibinhua2025-05-12 11:30
回复 3楼 csyx
谢谢!解决问题

[此贴子已经被作者于2025-5-12 11:40编辑过]

1