[C++][win32]Selecteren item in SysListView32 met SendMessage

Pagina: 1
Acties:

  • falcon4ever
  • Registratie: Oktober 2001
  • Laatst online: 07-04-2021
Op dit moment ben ik bezig om een programma te maken welke een aantal commando's automatisch uitvoerd. Het programma zoekt op dit moment de juiste handle (gevonden via Spy++) van een extern programma op en kan vervolgens een search uitvoeren. De resultaten in het externe programma zitten in een SysListView32 (in mijn code HWND hResults[2]).

Nu wil ik graag dat het eerste resultaat uit die lijst wordt geselecteerd zodat ik vervolgens de 'submit' knop kan aanroepen om het te versturen.

Mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
// Count results
int count=(int)SendMessage(hResults[2], LVM_GETITEMCOUNT, 0, 0);
printf("1. [%s] Found %d results\n",search ,count);

// Select the first result
LVITEM lvi;
lvi.state = true;
lvi.stateMask =  LVIS_SELECTED | LVIS_FOCUSED;
SendMessage(hResults[2], LVM_SETITEMSTATE, 0, (LPARAM)&lvi);

// Press submit button
SendMessage(hSearchfield[3], WM_LBUTTONDOWN, MK_LBUTTON, 0);
SendMessage(hSearchfield[3], WM_LBUTTONUP, MK_LBUTTON, 0);


Helaas werkt deze code niet helemaal goed, het item wordt wel gefocust (er komt zo'n kader omheen) maar een selectie wordt niet gemaakt (dat die hele rij blauw wordt)

Iemand een idee?

[ Voor 16% gewijzigd door falcon4ever op 08-10-2006 16:59 ]


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Misschien dat je de positie van dat item op kunt vragen en een mouseclick op die locatie kunt doen?

Nu met Land Rover Series 3 en Defender 90


  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10-2025
Zo even off the top of my head. Volgens mij kun je dat regelen via een property van het LVITEM object.
Ik heb dat in een grijs verleden ook eens moeten doen. Alleen dat was dan wel met het MFC framework.
Mocht het zo zijn dat hij stiekem toch nog meer moet doen voordat hij hem blauw inkleurt dan zul je inderdaad misschien moeten uitwijken naar de 'muisclick event opgooien' hack.

Ik heb hier zo geen c++ of mijn oude code bij de hand maar ik ben er behoorlijk zeker van dat het via het LVITEM object kan. Daarmee had ik het toendertijd ook voor elkaar gekregen.

  • falcon4ever
  • Registratie: Oktober 2001
  • Laatst online: 07-04-2021
MTWZZ schreef op maandag 09 oktober 2006 @ 08:47:
Misschien dat je de positie van dat item op kunt vragen en een mouseclick op die locatie kunt doen?
Gister avond heb ik dat dus maar gedaan; ik doe sendmessage met wm_ mousebutton down/up op een specifieke locatie.

nu werkt het redelijk goed.