iItem = SendMessage(hwnd, LVM_GETNEXTITEM, -1, LVNI_SELECTED);为何返回0 hwnd对吗?跟spy++对照一下或者用LVM_SCROLL测试一下能否拉动滚动条http://msdn.microsoft.com/zh-cn/library/aa929191.aspx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 hwnd你不会给的窗口句柄吧?那个函数要的是list-view控件的句柄 [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public extern static int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);这么定义的........应该怎么改 额,是用spy++获取的窗口句柄。 用spy++只能获取到一个窗口,不知道算不算窗口你可以理解成QQ的那个主界面的好友外边框,是参数传的不对吗? 仔细看了下,确实是个ListView,我hwnd给的是这个listview的句柄 窗口句柄肯定是不对的,要的是list-view控件的句柄你需要在spy++里把窗口展开,在子级里面找类名SysListView32之类的句柄代码里面你可以用FindWindow或enumChildWindow找到它http://bbs.csdn.net/topics/310163856http://gunxue77.blog.163.com/blog/static/1196804220114753425303/你最好去看看windows内部原理方面的书 嗯,我刚接触API,这个已经获取到最底层了,我看了下是个LIstView,是我SendMessage定义的不对吗 他所有的行返回的都是0...如果你每次都傳 -1 進去那每次肯定都是一樣的結果。int iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, -1, LVNI_SELECTED);while (iItem != -1) { // 得到選中的 iItem 索引 iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, iItem, LVNI_SELECTED);}當然,首先保證 hwndLV 是一個 SysListView32 類名。 他所有的行返回的都是0...如果你每次都傳 -1 進去那每次肯定都是一樣的結果。int iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, -1, LVNI_SELECTED);while (iItem != -1) { // 得到選中的 iItem 索引 iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, iItem, LVNI_SELECTED);}當然,首先保證 hwndLV 是一個 SysListView32 類名。这个我当时用for循环给的值,结果还是0,不过谢了 他所有的行返回的都是0...如果你每次都傳 -1 進去那每次肯定都是一樣的結果。int iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, -1, LVNI_SELECTED);while (iItem != -1) { // 得到選中的 iItem 索引 iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, iItem, LVNI_SELECTED);}當然,首先保證 hwndLV 是一個 SysListView32 類名。这个我当时用for循环给的值,结果还是0,不过谢了還有一點,如果你是獲取其他程序的窗口,有可能兩種情況下是沒法獲取的:1. 其他進程空間有可能無權限訪問,有可能需要用到 VirtualAlloc 之類的。你這個看來不涉及到。2. 程序用戶權限級別不同。比如以非管理員運行的程序,獲取以管理員權限運行的程序的數據,Vista 及以上的系統中會有這個問題。 读xml字符串的问题 每隔时间段就调用函数 怎样获取GridView模板中,控件的ClientID? .net里 5万的数据量 哪个键值对集合类的取数据性能最好? 用批处理重启Windows服务!! 如何在C#中做事物处理?? 如何将一个由WebControls.TextBox获取的String转化为UTF8编码 c#调用CopyMemory api函数 [[高分]]关于获取文件路径的问题[急!!!] SharpDevelop4.3打开VS2010的web项目 大牛们,多层架构的设想想突破我传统的做法,想做到一个类操作所有的类 C# VS中打包的问题
public extern static int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
这么定义的........应该怎么改
,是参数传的不对吗?
你需要在spy++里把窗口展开,在子级里面找类名SysListView32之类的句柄
代码里面你可以用FindWindow或enumChildWindow找到它
http://bbs.csdn.net/topics/310163856
http://gunxue77.blog.163.com/blog/static/1196804220114753425303/你最好去看看windows内部原理方面的书
嗯,我刚接触API,这个已经获取到最底层了,我看了下是个LIstView,是我SendMessage定义的不对吗
如果你每次都傳 -1 進去那每次肯定都是一樣的結果。
int iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
while (iItem != -1) {
// 得到選中的 iItem 索引
iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, iItem, LVNI_SELECTED);
}
當然,首先保證 hwndLV 是一個 SysListView32 類名。
如果你每次都傳 -1 進去那每次肯定都是一樣的結果。
int iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
while (iItem != -1) {
// 得到選中的 iItem 索引
iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, iItem, LVNI_SELECTED);
}
當然,首先保證 hwndLV 是一個 SysListView32 類名。这个我当时用for循环给的值,结果还是0,不过谢了
如果你每次都傳 -1 進去那每次肯定都是一樣的結果。
int iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
while (iItem != -1) {
// 得到選中的 iItem 索引
iItem = SendMessage(hwndLV, LVM_GETNEXTITEM, iItem, LVNI_SELECTED);
}
當然,首先保證 hwndLV 是一個 SysListView32 類名。这个我当时用for循环给的值,结果还是0,不过谢了
還有一點,如果你是獲取其他程序的窗口,有可能兩種情況下是沒法獲取的:
1. 其他進程空間有可能無權限訪問,有可能需要用到 VirtualAlloc 之類的。你這個看來不涉及到。
2. 程序用戶權限級別不同。比如以非管理員運行的程序,獲取以管理員權限運行的程序的數據,Vista 及以上的系統中會有這個問題。