当前位置:主页>销售管理软件> 列表

我要选择其它程序的listview的第一行,不知应该如何操 找进销存财务软件

财务软件版1楼: 1 我要选择其它程序的listview的第一行,不知应该如何操作!!!!
2 或如何得到外部程序的 ListView 的項目的全部項目文本!!

3 请问如何编程控制桌面图标是否自动排列!!
(得到当前是否是自动排列, 如果是,如何编程控制不是自动排列)

希望有一个有源代码的工程(我也知论坛里已有源代码的了,但我试了几天,都没试出来)
对不起了,一个问题只给 106 分!!

2楼: ListView有一个LEVEL属性,你自己慢慢研究去,我以前跟你一样,但现在明白了 如设备管理软件破解

3楼: 找一个桌面图标排列的程序,当然要有源码,看看就知道了,桌面就是一个listview

4楼: dywapple, 一点进展也没有!!!

boy2002cn,
你可能对桌面没有深切的认识(虽然只是一个listview 控件)

5楼: 1.找到相关的API(对应消息),对于这种操作,发送一个对应的消息即可.

6楼: 1 我要选择其它程序的listview的第一行,不知应该如何操作!!!!
2 或如何得到外部程序的 ListView 的項目的全部項目文本!!

上面的都希望有一个有源代码的工程(我也知论坛里已有源代码的了,但我试了几天,都没试出来)



3 请问如何编程控制桌面图标是否自动排列!!
(得到当前是否是自动排列, 如果是,如何编程控制不是自动排列)


对不起了,一个问题只给 106 分!!

财务软件版7楼: 帮顶!

http://www.source520.com

站长开发推广同盟 站长朋友的终极驿站
同时拥有海量源码电子经典书籍下载

http://www.source520.com/search/search.asp

"编程.站长"论坛搜索引擎-----为中国站长注入动力!

8楼: 1 我要选择其它程序的listview的第一行,不知应该如何操作!!!!
2 或如何得到外部程序的 ListView 的項目的全部項目文本!!

上面的都希望有一个有源代码的工程(我也知论坛里已有源代码的了,但我试了几天,都没试出来)

3 请问如何编程控制桌面图标是否自动排列!!
(得到当前是否是自动排列, 如果是,如何编程控制不是自动排列)


对不起了,一个问题只给 106 分!!

9楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯

10楼: 我每次的希望之火都由你(kaoleoloi)点起[:(]
先多谢你了[:)]

11楼: 发消息给 listview, 可以取得listview 的 文本;
function GetListViewText(mHandle: THandle; mStrings: TStrings): Boolean;
var
vColumnCount: Integer;
vItemCount: Integer;
I, J: Integer;
vBuffer: array[0..255] of Char;
vProcessId: DWORD;
vProcess: THandle;
vPointer: Pointer;
vNumberOfBytesRead: Cardinal;
S: string;
vItem: TLVItem;
begin
result := False;
if not Assigned(mStrings) then Exit;
vColumnCount := ListViewColumnCount(mHandle);
if vColumnCount <= 0 then Exit;
vItemCount := ListView_GetItemCount(mHandle);
GetWindowThreadProcessId(mHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
PROCESS_VM_WRITE, False, vProcessId);
vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);
mStrings.BeginUpdate;
try
mStrings.Clear;
for I := 0 to vItemCount - 1 do begin
S := '''';


for J := 0 to vColumnCount - 1 do begin
with vItem do begin
mask := LVIF_TEXT;
iItem := I;
iSubItem := J;
cchTextMax := SizeOf(vBuffer);
pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem));
end;
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(mHandle, LVM_GETITEM, I, lparam(vPointer));
ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)),
@vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
S := S + #9 + vBuffer;
end;
Delete(S, 1, 1);
mStrings.Add(S);
end;
finally
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
mStrings.EndUpdate;
end;
result := True;
end; { GetListViewText }

12楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯ 如什么财务软件最好

13楼: 我也想知道这个问题
1 我要选择其它程序的listview的第一行,不知应该如何操作!!!!

我先取得listview的句柄,然后设置为焦点成功,再发送个向下的按键给这个listview,但并没有成功选中第一行。

财务软件版14楼: 1 我要选择其它程序的listview的第一行,不知应该如何操作!!!!
2 或如何得到外部程序的 ListView 的項目的全部項目文本!!

3 请问如何编程控制桌面图标是否自动排列!!
(得到当前是否是自动排列, 如果是,如何编程控制不是自动排列)

希望有一个有源代码的工程(我也知论坛里已有源代码的了,但我试了几天,都没试出来)
对不起了,一个问题只给 106 分!!

15楼: Hook进入目标进程,然后就可以用消息了

16楼: 希望有一个有源代码的工程(我也知论坛里已有源代码的了,但我试了几天,都没试出来)
对不起了,一个问题只给 106 分!!

17楼: uses CommCtrl;

procedure SetListViewIndex(mHandle: THandle; mIndex: Integer);
var
vProcessId: DWORD;
vProcess: THandle;
vPointer: Pointer;
vNumberOfBytesRead: Cardinal;
vItem: TLVItem;
begin
GetWindowThreadProcessId(mHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
PROCESS_VM_WRITE, False, vProcessId);
vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);
try
vItem.stateMask := LVIS_FOCUSED;
vItem.state := LVIS_FOCUSED;
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(mHandle, LVM_SETITEMSTATE, mIndex, lparam(vPointer));

vItem.stateMask := LVIS_SELECTED;
vItem.state := LVIS_SELECTED;
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(mHandle, LVM_SETITEMSTATE, mIndex, lparam(vPointer));
finally
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
end;
end; { SetListViewIndex }

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
SetListViewIndex(ListView1.Handle, 0);
end;
用上面这个函数,直接传给它listview的句柄,和你要选择的行的行数(第一行=0),注意如果listview里面没数据是不能选中的

18楼: xuxiaohan贴给你 的获取listview内容的函数是可以用的,只不过他少贴了一个函数
function ListViewColumnCount(mHandle: THandle): Integer;
begin
Result := Header_GetItemCount(ListView_GetHeader(mHandle));
end; { ListViewColumnCount }

19楼: 我以前试过了,得到的是乱码,希望有一个有源代码的工程(我也知论坛里已有源代码的了,但我试了几天,都没试出来)
对不起了,一个问题只给 106 分!!再加上我的所有积分!!!!

20楼: 首先,选中其他程序listview第一行的那个搞好没?
能用or不能用??
提取listview内容的那个先另说

财务软件版21楼: 对!

22楼: ...........
楼主有没有看我在问什么.....?

你已经做到选中其他程序listview第一行以后,咱们再来讨论怎么取内容的问题........

上面别人贴的这个函数:
GetListViewText(mHandle: THandle; mStrings: TStrings): Boolean
我自己试过了是能够取出来的,如果你取出来的是乱码能否把你的源码贴出来?? 如进销存财务软件

23楼: 我还未做到选中其他程序listview一行!!!,有人实现了就一次结帐!!!

24楼: 那你用程序找到那个LISTVIEW的句柄了吗??

25楼: 当然找到那个LISTVIEW的句柄了!!

下面的没起作用,可能要做成DLL才可以实现内存访问吧,我有点不信,所以出现了上面的"乱码"吧!!

vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);

26楼: 把你的uses写出来看看

27楼: kunian已经把代码贴出来了,但那是用来对付syslistview32 系统类的,不知道会不会与Listview有不同?

财务软件版28楼: 有点难度呀!关注!!!!!!!!

29楼: 应该可以循环得到内容的。帮你调试下。
请看看我的问题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3416831

30楼: 高人怎么都休息了啊,自己顶!!!

31楼: 自己顶!!!