WinForm中如何实类似word插拖功能? 怎么使用DoDragDrop()将http://www.xx.com/1.jpg 以图片形式拖入html的编辑器在html编辑器中直接显示图片,而不是地址 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 winform里有拖放事件呀。查一下资料就行了。我记得好像是四个相关事件。挺简单的。 在winform 中使用文本编辑器或webbrower 用webbrower控件的话,肯定没问题的.但在用户接口和程序上都不好控制.所以我想用普通控件,通过DoDragDrop()方法实现. #include "stdafx.h"#include "windows.h"#include "shlobj.h"int main(int argc, char* argv[]){ char szFile[] = "W:\\zzzzzzzz\\aa\\a.ini"; HWND hWnd = ::FindWindow("Notepad", NULL); if(hWnd == NULL) return; DWORD dwBufSize = sizeof(DROPFILES) + sizeof(szFile) + 1; BYTE *pBuf = NULL; LPSTR pszRemote = NULL; HANDLE hProcess = NULL; __try { pBuf = new BYTE[dwBufSize]; if(pBuf == NULL) __leave; memset(pBuf, 0, dwBufSize); DROPFILES *pDrop = (DROPFILES *)pBuf; pDrop->pFiles = sizeof(DROPFILES); strcpy((char *)(pBuf + sizeof(DROPFILES)), szFile); DWORD dwProcessId; GetWindowThreadProcessId(hWnd, &dwProcessId); hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId); if(hProcess == NULL) __leave; 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); } __finally { if(pBuf != NULL) delete []pBuf; if(pszRemote != NULL) VirtualFreeEx(hProcess, pszRemote, dwBufSize, MEM_FREE); if(hProcess != NULL) CloseHandle(hProcess); } }模拟拖放到别的程序,这是以前CSDN搜到的C++代码 谢谢,楼上的。你这个拖动文件的。我也会。我要是的拖运html的格式的东西。不过现在已经不用了。哈.结贴 代码实现关闭正在使用中个文件 客户端获取服务器时间。但是有时抛出错误。请高手指点 CSS样式的正则表达式? 学GUI遇到的 一个TreeView非常奇怪的问题!!请高手指点 简单看一下我的问题,如何用软件模拟浏览器,登录网站 dll打包dll的问题 也发一个局域网的问题 用C#实现五子棋游戏。 简单问题 请问如何改变vs加载dll文件的顺序? C#操作数据库备份和还原
所以我想用普通控件,通过DoDragDrop()方法实现.
#include "windows.h"
#include "shlobj.h"
int main(int argc, char* argv[])
{
char szFile[] = "W:\\zzzzzzzz\\aa\\a.ini";
HWND hWnd = ::FindWindow("Notepad", NULL);
if(hWnd == NULL) return;
DWORD dwBufSize = sizeof(DROPFILES) + sizeof(szFile) + 1; BYTE *pBuf = NULL;
LPSTR pszRemote = NULL;
HANDLE hProcess = NULL;
__try {
pBuf = new BYTE[dwBufSize];
if(pBuf == NULL) __leave;
memset(pBuf, 0, dwBufSize);
DROPFILES *pDrop = (DROPFILES *)pBuf;
pDrop->pFiles = sizeof(DROPFILES);
strcpy((char *)(pBuf + sizeof(DROPFILES)), szFile);
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd, &dwProcessId);
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);
if(hProcess == NULL) __leave;
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);
}
__finally {
if(pBuf != NULL) delete []pBuf;
if(pszRemote != NULL) VirtualFreeEx(hProcess, pszRemote, dwBufSize, MEM_FREE);
if(hProcess != NULL) CloseHandle(hProcess);
}
}模拟拖放到别的程序,这是以前CSDN搜到的C++代码
不过现在已经不用了。哈.结贴