AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi ListView aus einer fremden Anwendung durchsuchen/anklicken
Thema durchsuchen
Ansicht
Themen-Optionen

ListView aus einer fremden Anwendung durchsuchen/anklicken

Ein Thema von Innos · begonnen am 21. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#1

ListView aus einer fremden Anwendung durchsuchen/anklicken

  Alt 21. Jan 2008, 15:41
Hi!

Ich versuche mich gerade an einem prog, dass ein ListView aus einem fremden Programm ausliest...
ich benutze den code von toms, den ich hier iwo gefunden habe,um das listView überhaupt einmal auszulesen und alles in mein eigenes ListView zu übertragen.

Jetzt möchte ich aber, wenn ich in meinem Programm, in meinem ListView eine Zeile anklicke, der selbe klick auch auf dem listview in dem fremden Programm ausgeführt wird. Das heißt ich muss die fremde listview nach der angeklickten´Caption durchsuchen und dieses item anklicken...

also die cation von der angeklickten zeile kriege ich so heraus:

label2.Caption:=(listview1.Selected.Caption); nur wie durchsuche ich jetzt die fremde listview danach und klicke das item danach an?
ist das überhaupt möglich?

vielen Dank schonma im Vorraus

mfg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 21. Jan 2008, 16:02
Schau mal nach LVM_FINDITEM und LVM_SETITEM (zumindest klingen die Beschreibungen recht vielversprechend).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 21. Jan 2008, 16:07
Hallo Innos,

Zitat:
Ich versuche mich gerade an einem prog, dass ein ListView aus einem fremden Programm ausliest...
ich benutze den code von toms, den ich hier iwo gefunden habe,um das listView überhaupt einmal auszulesen und alles in mein eigenes ListView zu übertragen.
Suchen kannst du ein Item mit LVM_FINDITEM. Da du jedoch die fremde Listview kopierst, kannst du ja
gleich direkt auf den entsprechenden Itemindex zugreifen. (ausser in der fremde Listview wurden die Items und somit Reihenfolge
in der Zwischenzeit geändert.


Zitat:
Jetzt möchte ich aber, wenn ich in meinem Programm, in meinem ListView eine Zeile anklicke, der selbe klick auch auf dem listview in dem fremden Programm ausgeführt wird. Das heißt ich muss die fremde listview nach der angeklickten´Caption durchsuchen und dieses item anklicken...
Kann ich nicht genau sagen, was für eine Nachricht dem entsprechenden Item geschickt werden muss
oder ob es nur genügt, das Item zu markieren?

Nachtrag: So sollte es funktionieren. Vielleicht gibt's noch eine elegantere Methode?

1. Item sichtbar machen LVM_ENSUREVISIBLE
2. Item Position herausfinden (mit LVM_GETITEMRECT / LVM_GETITEMPOSITION)
3. Mit mouse_event WM_LBUTTONDOWN/WM_LBUTTONUP senden.
Thomas
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#4

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 21. Jan 2008, 16:14
also ich lese diese listbox aus, klicke dann ein beliebiges item an... (die original listbox in dem fremden prog KÖNNTE geändert worden sein, aber das item ist immernoch enthalten) und dann soll es quasi nach der angeklickten cation aus meinem prog suchen... und das dazu gehörige item in dem fremden prog an klicken...

so THX erstma für eure tips ich schaus mir gleich ma an
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#5

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 21. Jan 2008, 16:30
mmhh check grade nicht wie ich das machen soll...

also
sendmessage(w,LVM_FINDITEM,0,0); nur diese nullen dahinten sind alle integer werte xD sry dass ich son noob bin aber wo kommt da mein string hin, nachdem ich suchen will?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 22. Jan 2008, 07:10
Zitat von Innos:
mmhh check grade nicht wie ich das machen soll...

also
sendmessage(w,LVM_FINDITEM,0,0); nur diese nullen dahinten sind alle integer werte xD sry dass ich son noob bin aber wo kommt da mein string hin, nachdem ich suchen will?
Du kannst ja die items per Iteration suchen, d.h du nimmst in etwa den gleichen Code wie zum auslesen der Listview und ermittelst so nach dem item / itemindex.
Thomas
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#7

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 22. Jan 2008, 11:54
so ich habs jetzt soweit, dass ich mithilfe deines streams, toms, dieses ListView durchsuchen kann... ich habe also die nummer des Items aus dem original ListView... wie sende ich jetzt einen klick genau auf dieses item?

also quasi:

Delphi-Quellcode:
sendmessage(w,WM_LBUTTONDOWN,0,0);
sendmessage(w,WM_LBUTTONUP,0,0);
nur wo gebe ich jetzt dieses item an, dass er in dem handle (die ListView) anklicken soll?

danke schon mal für eure hilfe
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 22. Jan 2008, 14:18
Mir ist keine Möglichkeit bekannt, einem bestimmten Item eine "onclick" Nachricht zu schicken.
Eine Möglichkeit wäre es, das gefundene Item zu markieren und dann Enter der Listview zu senden. Dies funktioniert sogar dann, wenn das Fenster, auf welchem sich die Listview befindet, nicht sichtbar ist.

Die Click Funktion könnte dann grob etwa so aussehen:

Delphi-Quellcode:
function LVClickItem(hwndLV: HWND; sItemText: string): Boolean;
const
  MaxTextLen = 1024;
var
  MemMgr: TProcessMemMgr;
  Item: TLVItem;
  i: Integer;
  PrItemText: PChar;
  PrItem: PLVItem;
begin
  Result := False;
  MemMgr := CreateProcessMemMgrForWnd(hwndLV);
  try
    PrItemText := MemMgr.AllocMem(MaxTextLen);
    PrItem := MemMgr.AllocMem(SizeOf(TLVItem));
    i := ListView_GetNextItem(hwndLV, -1, LVNI_ALL);
    while i >= 0 do
    begin
        //Item Eigenschaften setzen
        Item.mask := LVIF_TEXT;
        Item.iItem := i;
        Item.iSubItem := 0;
        Item.pszText := PrItemText;
        Item.cchTextMax := MaxTextLen;
        MemMgr.Write(Item, PrItem, SizeOf(TLVItem));
        if not ListView_GetItem(hwndLV, PrItem^) then Break;
        MemMgr.Read(PrItem, Item, SizeOf(TLVItem));
        //Überprüfen, ob Item mit gesuchtem Item übereinstimmt.
        if MemMgr.ReadStr(Item.pszText) = sItemText then
        begin
          //Item "Selected" Eigenschaften setzen
          Item.state := LVIS_SELECTED;
          Item.stateMask := LVIS_SELECTED;
          //Item markieren
          MemMgr.Write(Item, PrItem, SizeOf(TLVItem));
          if Boolean(SendMessage(hwndLV, LVM_SETITEMSTATE, i, LongInt(PrItem))) then
          begin
            //Enter senden
            PostMessage(hwndLV, WM_KEYDOWN, VK_RETURN, 0);
            PostMessage(hwndLV, WM_KEYUP, VK_RETURN, 0);
            Result := True;
          end;
          Break;
        end;
        i := ListView_GetNextItem(hwndLV, i, LVNI_ALL);
    end;
  finally
    MemMgr.Free;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#9

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 22. Jan 2008, 15:00
wooooww thx

ich werde deinen code noch bisl ändern zB geht das mit dem Enter nicht.... also atm markiere ich das item so wie du und dann sene ich den doppelklick aus

GANZ großes Kino
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#10

Re: ListView aus einer fremden Anwendung durchsuchen/anklick

  Alt 22. Jan 2008, 15:07
Zitat von Innos:
wooooww thx

ich werde deinen code noch bisl ändern zB geht das mit dem Enter nicht
GANZ großes Kino
Um was für ein Programm handelt es sich denn? Wie sendest du den "doppelklick"?
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz