- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以我正在通过 C 书示例在 Windows 上玩/实现 tomyown,并且有一些关于 dll 注入(inject)部分的东西让我感到困惑,我无法解决它。
我创建了一个属于另一个线程/进程的对话框,我试图向它发送 TCHAR 变量,以便它可以在某些函数中使用该 var(函数和 tchar 都在同一个 dll 文件中)
因此,当创建对话框并在另一个线程中正常运行时,我会向它发送一条消息。
首先我声明了tchar
TCHAR finalpath[MAX_PATH];
然后我只是用信息填充它(我在 dll 线程中执行此操作,而不是在对话框的线程中,让我还提到我必须在 dll 线程中执行此操作,因为那是填充所需 tchar 的唯一方法(我我需要获取 dll 工作目录并将其填入 tchar))
因此,当我在我的 tchar 中获得此信息时,我正在尝试向对话框发送消息并将 tchar 用作 LPARAM(wparam 是 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,请说明。
谢谢
最佳答案
即使您修复了类型声明并将 LPARAM
正确转换为 TCHAR*
,您的代码仍将是不正确的。您传递给该窗口过程的“参数”是一个指针,并且与任何指针一样,仅在进程地址空间内有效。接收窗口必须使用 ReadProcessMemory
并将字符串从您的进程复制到它自己的进程中。当然,这意味着接收进程知道您的进程 ID,并且具有能够从您的内存中读取的适当权限。而且您还需要传入字符串的长度,因为 ReadProcessMemory
无法猜测 NULL 终止符在哪里(尽管我认为最大长度为 MAX_PATH,这不是一个严重的问题)。
所以你是对的,这是一个令人头疼的问题,而且在未来更是如此。特权问题可能会成为阻碍。
您可以使用多种 IPC 机制。一个简单的方法是匿名命名管道,请参阅 Anonymous Pipe Operations .共享内存是另一个,参见 Using Shared Memory in a Dynamic-Link Library . COM 也可以工作(让您“控制”的进程创建一个托管在您的进程服务器中的类的实例,然后让 COM 编码(marshal)处理完成其余工作,请参阅 Marshaling Details )。或者您可以在进程边界之间手动编码 COM 接口(interface)(请参阅 CoMarshalInterface
)。
关于c++ - 问题 - TCHAR 作为 LPARAM 到属于另一个进程/线程的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590497/
如果有一张有客户的 table 和一张有地址的 table 。 一位客户必须(仅)有一个地址,但地址不必有客户(取决于字段类型)。所以我只是问如何告诉cake在寻找客户时获取客户地址,但在寻找地址时不
我有一个问题,我需要获取我的画廊表的所有图像(路径),该表拥有博物馆和拥有博物馆的用户。我得到了图像的路径,但这些与拥有博物馆的 user_id 没有关联。 所以简短的描述: 每个用户拥有一个博物馆,
我有一个问题,我需要获取我的画廊表的所有图像(路径),该表拥有博物馆和拥有博物馆的用户。我得到了图像的路径,但这些与拥有博物馆的 user_id 没有关联。 所以简短的描述: 每个用户拥有一个博物馆,
我有用户和个人资料(一对一属于用户) type User struct { ID int Username string Password string
我想以类似于'belongs to' association的方式使用GORM的Django's one-to-one relationships。考虑以下示例,其中每个User与一个Profile相
长期从事 Rails 开发, Backbone 菜鸟。 在我的 Rails 模型中,一个项目有很多任务,一个任务属于一个项目......标准的东西。 尝试在集合中获取项目的任务 json。 Examp
让我们直奔问题(使用 Grails 1.1.1,它应该适用于以前的问题) 我有 2 个域,即:用户和详细信息,如下所示: Class User { String userName ; ..
我正在尝试在 Rails 中设置模型关系,并且需要您的帮助,因为它不起作用:0 class User :creator_id end 就架构而言,request_threads表具有creator_
注意:我在编写问题时解决了问题,因此不需要答案。仍然与答案分享,以便有相同经历的人可以从中受益。 我有一个回收器 View ,其中包含图像和 2 个 TextView 。我想在单击图像时旋转图像,但发
我正在尝试为我的应用程序中的所有按钮添加自定义点击声音。我已经为 UIButton 创建了一个类类别,其中包含以下代码: NSURL *soundURL = [NSURL fileURLWithPat
我有这样一个IP:12.12.12.12 我正在遍历不同的 IP 范围(12.12.12.0/24(示例))格式,并尝试查看 IP 是否在该范围内。 我尝试了各种方法,例如 inet_addr 和比较
看完这个问题 ASP.NET MVC: Nesting ViewModels within each other, antipattern or no? 和 Derick Bailey 的评论 i t
我正在使用 FeedWordPress 从子公司网页将新闻导入母公司的新闻卷。 可在此处查看特定项目的 RSS 摘录:Pastebin 如您所见,我正在将我需要的图像放入 RSS 文件、描述 bloc
假设我有以下数据库架构: dogs 和 owners 与经典的 belongsToMany 相关联。 walks 表怎么样?我希望能够在这种关系中使用 Eloquent 好东西: $dogs = Do
我不知道出了什么问题,但我无法使用 :class_name 选项让belongs_to 工作。有人可以启发我。非常感谢! 这是我的代码片段。 class CreateUsers false
属于 JavaScript 对象原型(prototype)的回调函数如何访问对象成员?回调不能关闭,一切都必须定义如下: function Obji(param){ this.element =
有人可以解释一下 MarkupCompilePass1 和 PartialClassGenerationTask 这两个构建任务是如何归属在一起的吗?目前我不知道他们是否共存或者是否需要对方。有人可以
现在,我尝试了解 Grails 域类和 GORM 中的工作原理。所以,我尝试实验: 我试验了两个域类:Main 和 Sub。 我们走吧! 第 1 步: class Main { String
所以我有一个模型 App.DailyEntry = DS.Model.extend({ user_id: belongsTo('user'), entries: hasMany('En
我正在使用 primeng 组件选项卡菜单。 https://www.primefaces.org/primeng/#/tabmenu我找不到将所选 TAB 的颜色更改为不同颜色的方法。 最佳答案 抱
我是一名优秀的程序员,十分优秀!