1

shellexecuteを使用して外部プログラムを呼び出すと、Delphiコードでエラーが発生します

procedure TReceiverMainForm.btnSearchClick(Sender: TObject);
 var
  args:string;
begin
  mmoResult.Clear;
//  args := ' /d='  + TIdURI.URLEncode(Trim(sSearch)) + ' /t=ReceiverMainForm /s=30 /m=1'
args := ' /q='  + httpencode(Trim(txtSearch.Text)) + ' /t=ReceiverMainForm /s='+Trim(txtS.Text)+' /m='+Trim(txtM.Text);
  ShellExecute(Handle, 'open', 'YTD.exe', pWideChar(args), nil, SW_SHOWNORMAL);
end;

このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

7

関数はそのShellExecuteように定義されています

function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
  Directory: PChar; ShowCmd: Integer): HINST; stdcall;

したがって、問題は、args変数をのPWideChar代わりにキャストしていることPCharです。

このコードを試してください

ShellExecute(Handle, 'open', 'YTD.exe', PChar(args), nil, SW_SHOWNORMAL);

Delphi7はUnicodeDelphiの開発よりも前のものであることを忘れないでください。またPChar、8ビット文字タイプのエイリアスも同様PAnsiCharです。

于 2012-09-22T20:51:39.980 に答える