-
-
[求助]VB模拟拖放文件操作到一个别的程序,遇到一点问题
-
发表于: 2009-1-11 17:08 4126
-
http://topic.csdn.net/u/20081231/21/9a6f660f-5b5c-4f67-86a2-3542b68796b0.html
如上链接,之前在CSDN问过,贴子已经结了,但问题还没有解决,不好意思再问。自己捣鼓不出来,来这里问问各位牛人。
现在主要是
这段代码,特别是VirtualAllocEx和WriteProcessMemory函数,由于运用不熟练,不知道在VB中如何写才是正确的
目前在vb.net中我这样写
并不成功,收到的消息内容是“InvalidOpera”而不是文件路径,pszRemote我有试过()byte、string等类型,还是失败,实在是不知道要怎么写才对。
以上是第一个问题,后来我把那段VC代码弄成一个DLL,可以用了,但是一样遇到一个问题
其中sizeof(szFile)这里,由VB传string进来,字符串是有传进来,但是sizeof(szFile)得不到正确的长度,一直为零。char szFile[]这里我试过改成指针形式,也试过VB里构造一个()byte结尾添上字符串结束符传进来,仍然得不到正确的结果。
后来只好手动把字符串长度传参进来
这样写虽然能用了,但仍然想知道,sizeof(szFile)这里到底要怎么做才能得到正确的结果,为啥会这样?
先谢谢大家了。
如上链接,之前在CSDN问过,贴子已经结了,但问题还没有解决,不好意思再问。自己捣鼓不出来,来这里问问各位牛人。
现在主要是
LPSTR pszRemote = NULL; pszRemote = (LPSTR)VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE); if(pszRemote == NULL) __leave; if(WriteProcessMemory(hProcess, pszRemote, pBuf, dwBufSize, 0)) ::SendMessage(hWnd, WM_DROPFILES, (WPARAM)pszRemote, NULL);
这段代码,特别是VirtualAllocEx和WriteProcessMemory函数,由于运用不熟练,不知道在VB中如何写才是正确的
目前在vb.net中我这样写
Dim pszRemote As Int32 pszRemote = VirtualAllocEx(hProcess.ToInt32, 0, dwBufSize, MEM_COMMIT, PAGE_READWRITE) If pszRemote = 0 Then MsgBox("虚拟函数失败") : Exit Sub If (WriteProcessMemory(hProcess, pszRemote, pBuf, dwBufSize, 0)) <> 0 Then SendMessage(hWnd, WM_DROPFILES, pszRemote, 0) Else MsgBox("write内存失败") End If
并不成功,收到的消息内容是“InvalidOpera”而不是文件路径,pszRemote我有试过()byte、string等类型,还是失败,实在是不知道要怎么写才对。
以上是第一个问题,后来我把那段VC代码弄成一个DLL,可以用了,但是一样遇到一个问题
BOOL WINAPI DropFile(char szFile[], char szClassName[]) { HWND hWnd = ::FindWindow(szClassName, NULL); if(hWnd == NULL) return FALSE; DWORD dwBufSize = sizeof(DROPFILES) + sizeof(szFile) + 1;
其中sizeof(szFile)这里,由VB传string进来,字符串是有传进来,但是sizeof(szFile)得不到正确的长度,一直为零。char szFile[]这里我试过改成指针形式,也试过VB里构造一个()byte结尾添上字符串结束符传进来,仍然得不到正确的结果。
后来只好手动把字符串长度传参进来
BOOL WINAPI DropFile(char szFile[], char szClassName[],DWORD szSize) { HWND hWnd = ::FindWindow(szClassName, NULL); if(hWnd == NULL) return FALSE; DWORD dwBufSize = sizeof(DROPFILES) + szSize + 1;
这样写虽然能用了,但仍然想知道,sizeof(szFile)这里到底要怎么做才能得到正确的结果,为啥会这样?
先谢谢大家了。
赞赏
他的文章
- 这个……主页有个错别字 3166
- [原创]VB6打印控件SuperPrint的注册分析 6328
- [求助]VB模拟拖放文件操作到一个别的程序,遇到一点问题 4127
- [原创]解决进退魔兽争霸3中文名乱码问题 30041
看原图
赞赏
雪币:
留言: