关于32位64位程序兼容性的问题
我用vb.net做了个程序,用来读取其他程序的list view控件里的文本,需要声明一个结构体LVITEM
Public Structure LVITEM
... ...
Dim pszText As Int32
... ...
End Structure ' LVITEM
我要先把这个结构体写进目标程序的内存,然后发消息给目标程序的listview控件,让它把数据写进我的结构体,然后我再从目标程序的内存里把这个结构体读回来,其中有我想要的文本在目标程序内存中的地址,我再到这个地址把文本读出来,大功告成!
关于pszText字段的类型,当我的程序在64位系统上运行时,如果目标程序是32位的(我看到该程序在任务管理器进程列表里的名字有*.32的后缀),pszText字段应该是int32类型,如果目标程序是64位的,则pszText应该是intptr类型。
也就是说,在32位和64位程序中用的LVITEM结构体的数据类型不同,结构体字节长度也不同。而在我的程序中,我的程序中定义的LVITEM的数据类型只和我自己有关(假定我的程序是一个始终运行在64位系统上的64位程序),不能根据其他程序的特性来自动适应。
我想请教的是:
这个适应性的问题应该怎么解决?难道只有事先定义两个不同类型结构体LVITEM1和LVITEM2,每次判断目标程序是32位还是64位,然后分别使用相应的结构体?
顺便请教:
怎么判断目标程序是32位的还是64位的?