ShellExecute在pb11.5中執行回傳2,同樣的陳述句在pb9中執行成功,是什么問題?
程式如下:
string ls_ret, ls_null
ls_ret = 'E:\err_info.txt'
setnull(ls_null)
messagebox(ls_ret,ShellExecute(0,ls_null,ls_ret, ls_null, ls_null, 1))
定義如下:
Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref string lpParameters,ref string lpDirectory,ulong nShowCmd) LIBRARY "shell32.dll" ALIAS FOR "ShellExecuteA"
uj5u.com熱心網友回復:
定義成Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref string lpParameters,ref string lpDirectory,ulong nShowCmd) LIBRARY "shell32.dll" ALIAS FOR "ShellExecuteA;ansi"
uj5u.com熱心網友回復:
謝謝2樓的朋友,定義修改后解決了!就是不知道增加“ansi”后和以前的有什么其別?能麻煩再解釋下嗎?謝謝!
uj5u.com熱心網友回復:
PB10以下版本的程式,字串使用的ANSI編碼,pb10或以上版本,使用的是Unicode編碼,所以在API函式定義上,會有些出入.大部分在引數或回傳值中使用了字串的Windows API函式,都提供了兩個版本的API,一個是支持ANSI的,一般在函式后面加個A作為標記,一個是支持Unicode的,一般在函式后面加W(WideChar)作為標記.如GetWindowTextA和GetWindowTextW,所以在pb9時,定義API函式一般使用的是ANSI版本(因為PB9使用的是ANSI編碼),如果是升級到PB10或以后版本,則可以把API函式定義為使用Unicode版本即可,而不是使用PB程式直接升級的那樣,繼續采用Ansi版本。如果在PB10及以上還需要定義Ansi版本的函式,則需要定義函式時宣告;Ansi
uj5u.com熱心網友回復:
正解!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/73491.html
標籤:API 調用
