SHFileOperationコードインジェクションを使用して呼び出したい。私のコードは、 MessageBoxfromのような単純な関数を呼び出している間は正常に動作しますが、 fromuser32.dllを呼び出している間は動作しません。ShFileOperationshell32.dll
問題があると思われるコードの部分を投稿します。問題が構造体の実装にあることはわかっています。
以下は、RemoteInfo 値のイメージです。
http://www.freeimagehosting.net/uploads/219d79fc30.jpg
//構造
タイプ
LPSHFILEOPSTRUCT = ^SHFILEOPSTRUCT;
SHFILEOPSTRUCT = パックされたレコード
ワインド: HWND;
wFunc: UINT;
pFrom: PAnsiChar;
pTo: PAnsiChar;
fFlags: FILEOP_FLAGS;
fAnyOperationsAborted: BOOL;
hNameMappings: ポインタ;
lpszProgressTitle: PAnsiChar;
終わり;
//リモート情報
タイプ
TRemoteInfo = レコード
LoadLibrary: 関数 (lpLibFileName: PChar): HMODULE; stdcall;
GetProcAddress: 関数 (hModule: HMODULE;
lpProcName: LPCSTR): FARPROC; stdcall;
shf: SHFILEOPSTRUCT; ;
Kernel32: Char の配列 [0..20]。
shell32: Char の配列 [0..20];
SHFileOperationA: Char の配列 [0..20]。
Fromlpbuff: 文字の配列[0..20]; //ソースパス
Tolpbuff: Char の配列 [0..20]; //指定パス
終わり;
//初期化
....
ZeroMemory(@RemoteInfo, SizeOf(RemoteInfo));
RemoteInfo.shf.Wnd := 0;
RemoteInfo.shf.wFunc := FO_COPY;
RemoteInfo.shf.pFrom := @remoteInfo.Fromlpbuff;
RemoteInfo.shf.pto := @remoteInfo.tolpbuff;
lstrcpy(RemoteInfo.shf.pFrom, 'e:\1.jpg' + #0#0);
lstrcpy(RemoteInfo.shf.pto, 'f:\1.jpg' + #0#0);
RemoteInfo.shf.fFlags := FOF_ALLOWUNDO;
RemoteInfo.shf.fAnyOperationsAborted := false;
....