![]() |
innovaphone direkt ansteuern
Moin Leute :hi:
wir haben jetzt IP-Telefonie in der Firma. Ich kann in meiner jetzigen Konfiguration nur das Programm "innovaphone SoftwarePhone" verwenden. Für das Bisschen, das ich telefoniere reicht das auch. Man kann über Strg+V eine Telefonnummer aus der Zwischenablage einkopieren und nur noch abheben. Auch schön. Man kann auch eine Nummer über die Tastatur eingeben und wählen. Schön wäre es, wenn ich von einer Delphi-Applikation aus eine Nummer übertragen und abheben könnte. Ich habe mir das Handle des Fensters herausgesucht und mal WM_KEYDOWN und WM_KEYUP geschickt, klappt leider nicht. Wenn ich WM_CLOSE schicke, will sich das Programm beenden. Das richtige Handle habe ich folglich. Kann mir da jemand helfen? Stefan |
AW: innovaphone direkt ansteuern
Moin,
ich habe etwas gefunden:
Delphi-Quellcode:
Das Ding startet über einen Timer eben durch und beendet sich wieder.
procedure TFormMain.TimerStartTimer(Sender: TObject);
var lNr : string; lH, lHform : THandle; lZ : Integer; lWert : Byte; begin TimerStart.Enabled := False; lH := 0; lHform := 0; repeat lHform := FindWindowEx(0,lHform,nil,'innovaphone SoftwarePhone'); lH := 0; if lHform > 0 then begin lH := FindWindowEx(lHform, 0, nil, 'Telefon'); end; until (lHform = 0) or (lH > 0); if lH > 0 then begin lH := FindWindowEx(lH, 0, nil, 'Telefon'); end; if lH > 0 then begin lH := FindWindowEx(lH, 0, 'AfxWnd70s', nil); end; if ParamCount = 0 then begin lNr := ClipBoard.AsText; end else begin for lZ := 1 to ParamCount do begin lNr := lNr + ParamStr(lZ); end; end; lNr := StringReplace(lNr,'+49','0',[]); lZ := 1; while lZ <= Length(lNr) do begin if lNr[lZ] in ['0'..'9'] then begin Inc(lZ); end else begin Delete(lNr,lZ,1); end; end; if Copy(lNr,1,9) = '<eigene externe Nummer>' then begin Delete(lNr,1,9); end; if Length(lNr) > 4 then begin lNr := '0' + lNr; end; if lH > 0 then begin if isIconic(lHform) then begin SetForegroundWindow(lHform); ShowWindow(lHform,SW_RESTORE); end; for lZ := 1 to Length(lNr) do begin lWert := Ord(lNr[lZ]) - Ord('0'); PostMessage(lH ,WM_KEYDOWN ,lWert + 96 ,0); end; end else begin ShowMessage('Handle für innovaphone nicht gefunden!'); end; Close; end; Damit interne Gespräche nicht über Außerhalb laufen, habe ich die Stelle <eigene externe Nummer> eingefügt. Für eine Doku hatte ich leider keine Zeit, ist nur eine interne Geschichte. Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 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