如題,一點頭緒也沒有。有沒有好的思路,謝謝
uj5u.com熱心網友回復:
知道這個有啥子用啊,點 TXT 打開時執行引數上有檔案名uj5u.com熱心網友回復:
獲取命令列引數,雙擊TXT有檔案名引數.快捷方式打開的沒引數
uj5u.com熱心網友回復:
如果是雙擊打開后.再加載一個TXT檔案.那這就不可能檢查出來了.uj5u.com熱心網友回復:
通過比對work directory和exe路徑,可判斷:不一致則必定是通過txt打開,一致則是通過記事本exe打開uj5u.com熱心網友回復:
關鍵是我如何取得其它程式的命令列引數,謝謝
uj5u.com熱心網友回復:
關鍵是我如何取得其它程式的命令列引數 ,高手給點思路,謝謝
uj5u.com熱心網友回復:
這個函式可以得到其他行程的命令列引數//獲取行程的命令列引數,回傳False失敗,并在Command中回傳錯誤資訊,
// 回傳True成功,把行程的命令列及引數保存到Command中
//For Win32 目標行程如果是64位要失敗
function GetProcessCommandLine(dwPID : DWORD; var Command : String) : Boolean;
var
D : DWORD;
hProcess , hThread : THandle;
pAddr : Pointer;
Buf : array [0..MAX_PATH-1] of WideChar;
begin
Result := False;
pAddr := Windows.GetProcAddress(Windows.GetModuleHandle(kernel32) , 'GetCommandLineW');
if pAddr=NIL then begin
Command := SysErrorMessage(GetLastError());
exit;
end;
hProcess := Windows.OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_READ or PROCESS_QUERY_INFORMATION , False , dwPID);
if hProcess=0 then begin
Command := SysErrorMessage(GetLastError());
exit;
end;
hThread := Windows.CreateRemoteThread(hProcess , NIL , 0 , pAddr , NIL , 0 , D);
if hThread=0 then begin
CloseHandle(hProcess);
Command := SysErrorMessage(GetLastError());
exit;
end;
Windows.WaitForSingleObject(hThread , 1000);
Windows.GetExitCodeThread(hThread , D);
FillChar(Buf , SizeOf(Buf) , 0);
Windows.ReadProcessMemory(hProcess , Ptr(D) , @Buf , SizeOf(Buf) , D);
Command := Trim(Buf);
CloseHandle(hProcess);
CloseHandle(hThread);
end;
uj5u.com熱心網友回復:
CloseHandle(hProcess);
CloseHandle(hThread);
Result := True; //加上這一行
end;
uj5u.com熱心網友回復:
windows編程里的。uj5u.com熱心網友回復:
這個代碼回傳拒絕訪問uj5u.com熱心網友回復:
很不錯的思路啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110197.html
標籤:VCL組件開發及應用
