![]() |
Item in Fremder ListView doppelt anklicken
Habe das Handle einer Listview eines anderen Programms. Ich möchte nun den zweiten eintrag anklicken. Ist das möglich?
|
Re: Item in Fremder ListView doppelt anklicken
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Das ist nicht ganz trivial. Ich habe es mal so hingebracht:
Delphi-Quellcode:
uses CommCtrl, uProcessMemMgr {siehe Anhang}; function LVDblClickItemByIndex(hwndLV: HWND; ItemIndex: Word): Boolean; // Führt einen Doppelklick (Enter) auf ein Item in einer fremden ListView aus // hwndLV: Handle der ListView // ItemIndex: Index des Items, angefangen bei 0 // Diese Methode funktioniert u.U nur, wenn kein anderes Item markiert ist. const MaxTextLen = 1024; var MemMgr: TProcessMemMgr; LVItem: TLVItem; iLVitemsCount: Integer; PrItem: PLVItem; begin Result := False; MemMgr := CreateProcessMemMgrForWnd(hwndLV); try PrItem := MemMgr.AllocMem(SizeOf(TLVItem)); iLVitemsCount := ListView_GetItemCount(hwndLV); if ItemIndex < iLVitemsCount then begin FillChar(LVItem, SizeOf(LVItem), 0); // Item Eigenschaften setzen LVItem.mask := LVIF_TEXT; LVItem.iItem := ItemIndex; MemMgr.Write(LVItem, PrItem, SizeOf(TLVItem)); if not ListView_GetItem(hwndLV, PrItem^) then Exit; MemMgr.Read(PrItem, LVItem, SizeOf(TLVItem)); if ListView_GetItem(hwndLV, PrItem^) then begin // Item "Selected" Eigenschaften setzen LVItem.state := LVIS_SELECTED; LVItem.stateMask := LVIS_SELECTED; // Item markieren MemMgr.Write(LVItem, PrItem, SizeOf(TLVItem)); if Boolean(SendMessage(hwndLV, LVM_SETITEMSTATE, ItemIndex, LongInt(PrItem))) then begin // Enter senden PostMessage(hwndLV, WM_KEYDOWN, VK_RETURN, 0); PostMessage(hwndLV, WM_KEYUP, VK_RETURN, 0); // SendMessage(hwndLV, WM_LBUTTONDBLCLK, ItemNumber, LongInt(PrItem)); Result := True; end; end; end; finally MemMgr.Free; end; end; |
Re: Item in Fremder ListView doppelt anklicken
Funktioniert nicht
|
Re: Item in Fremder ListView doppelt anklicken
Zitat:
|
Re: Item in Fremder ListView doppelt anklicken
Genau und wenn ichs bei meiner listview mache und im OnKeyPress ereignis ShowMessage habe, sodass ich weis ob Enter gedrückt wurde bekomme ich 2000 msgs und das Prog stürzt ab
|
Re: Item in Fremder ListView doppelt anklicken
Hast du Vista?
|
Re: Item in Fremder ListView doppelt anklicken
Nein XP SP2
Zudem möchte ich ja klicken :D Nicht enter drücken |
Re: Item in Fremder ListView doppelt anklicken
Sende der ListView mal ein diese Nachrichten
Delphi-Quellcode:
wobei
xy := LPARAM(Longword(Word(90) shl 16));
PostMessage(wndChild, WM_MOUSEMOVE, 0, xy); PostMessage(wndChild, WM_LBUTTONDOWN, MK_LBUTTON, xy); PostMessage(wndChild, WM_LBUTTONUP, 0, xy);
Delphi-Quellcode:
var
xy : Integer; |
Re: Item in Fremder ListView doppelt anklicken
da wird auf glaube ich ein Random Item geklickt...immer ein anderes
|
Re: Item in Fremder ListView doppelt anklicken
Bei mir wird nur immer das 2 Item angeklickt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz