[Win32/C++] Eigen USB phone driver koppelen aan X-Lite

Pagina: 1
Acties:
  • 143 views sinds 30-01-2008
  • Reageer

  • Martkrui
  • Registratie: Februari 2002
  • Laatst online: 20:15
Ik heb een usb phone die natuurlijk niet compatible is met de drivers die te downloaden zijn bij yealink voor allerhande applicaties.

Nu heb ik wel de complete C++ code + DLL's gekregen van een testtool dus ik kan de telefoon wel volledig besturen.

Nu wil ik zelf een driver gaan schrijven die koppelt met X-Lite. Daarbij wil ik de volgende dingen :
* Telefoon buzzer laten "ringen" bij incomming call
* Bij toets op telefoon X-Lite naar voren halen als deze ge-minimized is
* CallerID op Phone laten zien

De telefoonkant is geen probleem maar hoe kan ik gegevens uit X-Lite krijgen ?

Weet iemand of er een API beschikbaar is ? Kan het door aan het cHwnd te koppelen ?

Ik heb al een tijdje geen windows specifieke dingen meer gedaan dus het is wat "roestig".

Wat ik zelf geprobeerd heb :
Google, Twee dagen met C++ en FindWindowEx geprobeerd

Dus, wie weet hoe ik data uit X-Lite krijg ? Het liefst in C# of C++

[ Voor 4% gewijzigd door Martkrui op 29-01-2006 17:28 ]

I haven't lost my mind! It's backed up on tape somewhere!


  • Martkrui
  • Registratie: Februari 2002
  • Laatst online: 20:15
[24h kick]

Niemand een leuk voorbeeldje om iets van gegevens uit een ander windows te halen ?

I haven't lost my mind! It's backed up on tape somewhere!


Verwijderd

Van X-Lite en eventuele api's weet ik niets van, maar het lijkt me wel de betere methode om zoiets te doen. Met de win32 api kun je ook wel programma's beinvloeden enzovoort (door middel van messages en simuleren van keyboard en mouse), maar dat is een veel minder nette methode imo.

Mocht er inderdaad geen methode beschikbaar zijn vanuit X-Lite (double check dit eerst), zoek dan in de win32 api zoals je zelf al aangaf naar functies om andere programmas te beinvloeden:
MSDN artikel
Bekijk met name:
FindWindow Om de X-Lite window te vinden.
EnumChildWindows met de bijbehorende callback functie: EnumChildProc Om de childs van deze window te vinden (i.e. text area's)
ShowWindow Voor je naar voren brengen van het window.

Over het algemeen zul je eerst het mainwindow moeten vinden, hier kun je je SW_RESTORE (ik denk dat je die moet hebben, niet 100% zeker) naar toe sturen om hem weer naar voren te brengen. Om bijvoorbeeld de textbox te krijgen waarin de beller staat zul je vanuit de main window de child moeten zien te krijgen, als je de handle hebt van waar je de tekst wilt krijgen, kun je er een WM_GETTEXTLENGTH en dan WM_GETTEXT naar toe sturen (als ik het me goed herinner :P) om de tekst te krijgen die het bevat.

Om je te helpen met het vinden van de juiste windows en handles kun je een programmatje gebruiken die dat ook kunnen, MS Spy++ die bij Visual C standaard mee komt is zo een programma (onder tools ofzo?), en Spy & Capture (dacht ik) is er ook een.

Vaar niet blind op wat ik hier boven beschreef, want het is voor mij ook meer dan "roestig" :P

  • Martkrui
  • Registratie: Februari 2002
  • Laatst online: 20:15
--B-- bedankt voor het antwoord.

Ik heb inmiddels in ieder geval het cWnd van het X-Lite window.

code:
1
2
3
4
5
6
CWnd *phRemoteWindow;
TCHAR buf[512];
phRemoteWindow = FindWindow(NULL,"X-Lite");   
phRemoteWindow->ShowWindow(SW_SHOW);
phRemoteWindow->SendMessage(WM_GETTEXT ,sizeof(buf)/sizeof(TCHAR),(LPARAM)(void*)buf);
printf( buf);

WM_GETTEXT werkt wel maar ShowWindow lijkt niets te doen.

Maar ik heb in ieder geval een begin waarmee ik verder kan werken. Bedankt !!

I haven't lost my mind! It's backed up on tape somewhere!


Verwijderd

Misschien heb je hier nog iets aan?

  • Martkrui
  • Registratie: Februari 2002
  • Laatst online: 20:15
ZEKER..

Hiermee gaat "spelen" een stuk sneller... Enorm bedankt.
Ik zal nu wel een paar dagen druk zijn met proberen, maar uiteindelijk zal ik laten weten of het gelukt is.

I haven't lost my mind! It's backed up on tape somewhere!

Pagina: 1