BOOL CprjVPackV4BatchToolsDlg::FSendDropFile(CString strFilePath)
{
int nResult = FALSE;
HWND hMain = NULL;
char szFile[MAX_PATH] = {0};
DWORD dwBufSize = 0;//sizeof(DROPFILES) + sizeof(szFile) + 1;
BYTE *pBuf = NULL;
DWORD dwProcessId = 0;
HANDLE hProcess = 0;
LPSTR pszRemote = NULL;
wcstombs(szFile,strFilePath.GetBuffer(0),_MAX_PATH);
dwBufSize = sizeof(DROPFILES) + strlen(szFile) + 1;
hMain = ::FindWindow(NULL,_T("主程序界面"));
if ( hMain == NULL)
{
MessageBox(_T("不能找到主程序!"));
goto Exit0;
}
pBuf = new BYTE[dwBufSize];
if (pBuf == NULL)
goto Exit0;
memset(pBuf,0,dwBufSize);
DROPFILES *pDrop = (DROPFILES *)pBuf;
pDrop->pFiles = sizeof(DROPFILES);
strcpy((char *)(pBuf + sizeof(DROPFILES)), szFile);
GetWindowThreadProcessId(hMain,&dwProcessId);
if (0 == dwProcessId)
{
goto Exit0;
}
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);
if (hProcess == 0)
{
goto Exit0;
}
pszRemote = (LPSTR)VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE);
if (NULL == pszRemote)
{
goto Exit0;
}
if(WriteProcessMemory(hProcess, pszRemote, pBuf, dwBufSize, 0))
{
::SendMessage(hMain, WM_DROPFILES, (WPARAM)pszRemote, NULL);
}
else
{
goto Exit0;
}
nResult = TRUE;
Exit0:
if (pBuf)
{
delete [] pBuf;
pBuf = NULL;
}
return nResult;
}
帮忙吧 上面的VC 代码转成DELPHI 的好吗 感谢了
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)