【发布时间】:2011-01-04 03:55:21
【问题描述】:
所以我正在通过 c 书籍示例使用 windows 玩/实现tomyown,并且有一些关于 dll 注入部分的东西让我感到困惑,我无法解决它。
我创建了一个属于另一个线程/进程的对话框,我正在尝试向它发送 TCHAR 变量,以便它可以在某些函数中使用该 var(函数和 tchar 都在同一个 dll 文件中)
因此,当创建对话框并很好地放置在另一个线程中时,我会向它发送一条消息。
首先我声明 tchar
TCHAR finalpath[MAX_PATH];
然后我只是用信息填充它(我在 dll 线程中执行此操作,而不是在对话框的线程中,我还要提一下我必须在 dll 线程中执行此操作,因为这是填充所需 tchar 的唯一方法(我需要获取dll工作目录并填写tchar))
所以,当我在 tchar 中获取此信息时,我试图向对话框发送消息并将 tchar 用作 LPARAM(wparam is hwnd btw)
SendMessage(hWndDIPS, WM_APP, (WPARAM) lista, (LPARAM)finalpath);
之后我在另一个线程对话过程循环中做基本功课......
INT_PTR WINAPI Dlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
chHANDLE_DLGMSG(hWnd, WM_CLOSE, Dlg_OnClose);
case WM_APP:
SaveListViewItemPositions((HWND) wParam, (TCHAR)lParam);
break;
}
return(FALSE);
}
应该接收参数的函数(此函数驻留在共享dll中,并由您在上面看到的过程调用,定义如下..
void SaveListViewItemPositions(HWND hWndLV, TCHAR sejv[]) { ...}
我从中得到的编译器错误是
Error 7 error C2664: 'SaveListViewItemPositions' : cannot convert parameter 2 from 'TCHAR' to 'TCHAR []'
所以我不知道为什么会这样。如果 tchar 是数组,那么我需要在参数中使用它并添加 [],因为这就是在参数中使用数组的方式(更不用说,如果我不这样做,它会给我更多错误,而且我无论如何都不能在函数中使用参数)
那么为什么它没有转换呢?
如果有其他解决方案可以使此对话框接收 tchar var,请解释一下。
谢谢
【问题讨论】:
-
您试图通过简单地传递指针来跨进程边界发送数据?
标签: c++ windows winapi dll hook