![]() |
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.
|
Re: Item in Fremder ListView doppelt anklicken
Da sind ca 50 Items in der ListView. Es wird immer das dritte angeklickt von dem ausschnitt den man sieht. Scrollt man z.B. runter sodass man ab dem 6 item erst die restlichen items sieht wird das 9 item angeklickt und so
|
Re: Item in Fremder ListView doppelt anklicken
Zitat:
|
Re: Item in Fremder ListView doppelt anklicken
Muss ich die X und Y Koordinaten rausfinden? Wenn ja ist ds keine besonders elegante lösung ... schließlich haben verschiedene leute verschiedene Bildschirmauflösungen
|
Re: Item in Fremder ListView doppelt anklicken
:lol: :lol:
|
Re: Item in Fremder ListView doppelt anklicken
Zitat:
Bildschirmauflösungen spielen so keine Rolle. |
Re: Item in Fremder ListView doppelt anklicken
OK funktioniert jetzt :D
Weist du auch wie man von der Listview sofer ich dsa handle habe alle einträge speichern kann? |
Re: Item in Fremder ListView doppelt anklicken
Zitat:
Zitat:
![]() |
Re: Item in Fremder ListView doppelt anklicken
Finde nichts was ich verstehe. Ich möchte ja eig nur einmal alles speichern
|
Re: Item in Fremder ListView doppelt anklicken
Zitat:
![]() PS: Meine Frage hast du noch nicht beantwortet. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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