Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

TAPI-Anwendung via AHK - wer hat noch eine Idee dazu?

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
M'o



Anmeldedatum: 28.12.2005
Beiträge: 85
Wohnort: Leipzig

BeitragVerfasst am: So März 16, 2008 8:27 pm    Titel: TAPI-Anwendung via AHK - wer hat noch eine Idee dazu? Antworten mit Zitat

Hallo zusammen,

da bei mir in der Firma in Sachen CTI nichts in Gang kommt und mich der Griff zur Wahltastatur immer mehr nervt, möchte ich eine TAPI-Anwendung für meine Bedürfnisse schreiben. AHK-seitig ist mir die Lösung klar, nur wie spreche ich die TAPI-Schnittstelle an? Windows XP sollte ja sowas mitbringen, oder irre ich mich da?

Anderenfalls wäre ich an einer simplen TAPI-Applikation bzw. Tipps dazu interessiert.

Danke für Eure Hilfe...
M'o


Zuletzt bearbeitet von M'o am Mi März 26, 2008 5:14 pm, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
scoin



Anmeldedatum: 21.03.2006
Beiträge: 48
Wohnort: Leipzig

BeitragVerfasst am: Mo März 17, 2008 8:56 am    Titel: Antworten mit Zitat

Hallo M'o,

ich arbeite mit "PhoneSuite CTI". Ist in der light Version Freeware. Zum Ausprobieren reicht das allemal. Ich bin sehr zufrieden damit.
Man klickt auf eine Telefonnumer, drückt die PAUSE-Taste (oder eine andere) , nimmt den Hörer ab und los gehts....
Eigenes Telefonbuch und Zusammenarbeit mit Outlook geht auch.

http://www.phonesuite.de/

Grüße
Scoin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M'o



Anmeldedatum: 28.12.2005
Beiträge: 85
Wohnort: Leipzig

BeitragVerfasst am: Mo März 17, 2008 3:05 pm    Titel: Antworten mit Zitat

Hallo scoin,

danke für Deine Antwort. Aber den Einsatz eines solchen Tools verbieten sicher die Lizenzbedingungen. Außerdem möchte ich gern auch Rufe am PC annehmen können, welches die Software nicht in der Light-Version bietet. Daher auch die Frage nach Ideen mit AHK...

Mit einem Dll-Call sollte das machbar sein, dummerweise findet sich nirgends eine Doku zu tapi32.dll... Sad

Ansonsten - Grüße von Leipzig nach Leipzig Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M'o



Anmeldedatum: 28.12.2005
Beiträge: 85
Wohnort: Leipzig

BeitragVerfasst am: Mi März 26, 2008 5:13 pm    Titel: Antworten mit Zitat

Hallo zusammen,

ich hab mir mal den Tipp von scoin angeschaut, aber das ist eigentlich schon wieder zu viel.

Nun habe ich schon mit der Funktion tapiRequestMakeCall() aus der tapi32.dll experimentiert, aber ich bekomm es einfach nicht hin, dass eine Telefonnummer, die übergeben wurde, wählt wird:
Number = 00491234567890
Result := DllCall("tapi32\tapiRequestMakeCall", %Number%)

Entweder bekomm ich als Result nichts zurück oder -4, was ja heissen würde, dass es die Funktion nicht in der Dll gibt...

Im Prinzip möchte ich folgendes realisieren:

- aus meiner Applikation die Telefonnummer auslesen und wählen
- Gespräch per Hotkey beenden
- Leitungsüberwachung und Anzeige der Rufnummer bei ankommendem Ruf und ggf. Rufannahme

Mehr braucht es auch nicht zu leisten...

Danke für Eure Aufmerksamkeit...
M'o
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Mi März 26, 2008 5:31 pm    Titel: Antworten mit Zitat

Bin zwar kein DllCall Experte, aber ich glaube dein Funktionsaufruf ist falsch. Die Prozentzeichen müssen raus.

Code:
Result := DllCall("tapi32\tapiRequestMakeCall", Number)


In der Klammer wird nämlich ein Ausdruck erwartet.

Hier noch die MSDN Seite zur tapiRequestMakeCall Funktion. Vielleicht kann einer der Experten hier daraus erkennen, was falsch läuft.
http://msdn2.microsoft.com/en-us/library/ms737210.aspx
______________
Gruß AGU
Nach oben
M'o



Anmeldedatum: 28.12.2005
Beiträge: 85
Wohnort: Leipzig

BeitragVerfasst am: Mi März 26, 2008 5:33 pm    Titel: Antworten mit Zitat

Hallo AGU,

auch ohne die %-Zeichen tut es nicht... Dummerweise finden sich nirgendwo verwertbare Infos zur Tapi32.dll. Nur irgendwelcher kommerzieller Kram... Sad


cIao
M'o
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Mi März 26, 2008 5:38 pm    Titel: Antworten mit Zitat

Zitat:
auch ohne die %-Zeichen tut es nicht
Das habe ich mir schon gedacht.

DllCall schreibt lt. Doku Type/Arg Paare vor.
In deinem Beispiel fehlt die Typebezeichnung von Number. Sowas wie.

Code:
Result := DllCall("tapi32\tapiRequestMakeCall", Int, Number).


Den korrekten "Type" erfährt man meines Wissens nur aus einer bereitgestellten Dokumentation, von der du anscheinend keine findest.
_________________
Gruß AGU
Nach oben
M'o



Anmeldedatum: 28.12.2005
Beiträge: 85
Wohnort: Leipzig

BeitragVerfasst am: Mi März 26, 2008 5:53 pm    Titel: Antworten mit Zitat

Code:
      ' ***********************************************************
      ' FUNCTION: DialNumber()
      '
      ' PURPOSE: To dial a telephone number using the computer's modem
      '
      ' ARGUMENTS:
      '    PhoneNumber: The telephone number to dial
      '
      ' EXAMPLE:
      '    Type the following in the Debug window to dial a phone number:
      '
      '       ? DialNumber("555-1212")
      ' ***********************************************************
      Function DialNumber (PhoneNumber)
         Dim Msg As String, MsgBoxType As Integer, MsgBoxTitle As String
         Dim RetVal As Long

         ' Ask the user to pick up the phone.
         Msg = "Please pickup the phone and click OK to dial " _
            & PhoneNumber
         MsgBoxType = MB_ICONINFORMATION + MB_OKCANCEL
         MsgBoxTitle = "Dial Number"

         If MsgBox(Msg, MsgBoxType, MsgBoxTitle) = ID_CANCEL Then
            Exit Function
         End If

         ' Send the telephone number to the modem.
         RetVal = tapiRequestMakeCall(PhoneNumber, "", "", "")

         If RetVal < 0 Then
            Msg = "Unable to dial number " & PhoneNumber
            GoTo Err_DialNumber
         End If

         Exit Function

      Err_DialNumber:      'This is not an On Error routine.
         Msg = Msg & vbCr & vbCr & _
            "Make sure no other devices are using the Com port"
         MsgBoxType = MB_ICONSTOP
         MsgBoxTitle = "Dial Number Error"
         MsgBox Msg, MsgBoxType, MsgBoxTitle

      End Function


Eben nicht, den Schnipsel habe ich hier: http://support.microsoft.com/?kbid=141625 gefunden. Dort sind die weiteren Parameter leer. Auch das habe ich schon versucht...

cIao
M'o
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo¨
Gast





BeitragVerfasst am: Mi März 26, 2008 6:12 pm    Titel: Antworten mit Zitat

In ToolTime liegt ne Quelle dazu ab ...
Nach oben
Chucky



Anmeldedatum: 07.01.2006
Beiträge: 705
Wohnort: Powerland

BeitragVerfasst am: Mi März 26, 2008 7:13 pm    Titel: Antworten mit Zitat

M'o hat Folgendes geschrieben:
Code:
      ' EXAMPLE:
      '    Type the following in the Debug window to dial a phone number:
      '
      '       ? DialNumber("555-1212")
      ' ***********************************************************
      Function DialNumber (PhoneNumber)

Im Beispiel erwartet die Funktion einen String; vielleicht klappt der folgende Aufruf besser:
Code:
Number := "555-1212"
Result := DllCall("tapi32\tapiRequestMakeCall", Str, Number)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Mi März 26, 2008 9:33 pm    Titel: Antworten mit Zitat

Zitat:
Dort sind die weiteren Parameter leer
Wobei das nach VisualBasic oder ähnlichem ausschaut.

Wenn du Autohotkey verwenden willst, musst du dich auch an die Syntax halten, damit es funktionieren soll. Und DllCall schreibt nun mal explizit Type/Arg Argumente vor.

In deinem Beispiel werden die Argumente ja ebenfalls typisiert. Wink

Code:
...
Dim Msg As String, MsgBoxType As Integer, MsgBoxTitle As String
Dim RetVal As Long
...

Im Fall von Autohotkey musst du die Typisierung eben innerhalb des DllCall Aufrufes vornehmen.

Das würde ich als nicht-DllCall-Experte dazu sagen. Ohne AHK Syntax funktionierts eben nicht. Und AHK mit VB zu vergleichen ist eben wie die berühmte Geschichte mit den Äpfeln und den Birnen. Wink
________________
Gruß AGU
Nach oben
denick



Anmeldedatum: 15.09.2006
Beiträge: 1230
Wohnort: Berlin

BeitragVerfasst am: Do März 27, 2008 6:11 am    Titel: Antworten mit Zitat

Moin,

wenn man das VB-Skript einfach mal in AHK übersetzt:
Code:
#NoEnv
DialNumber(12345678)
ExitApp

; ******************************************************************************
; FUNCTION: DialNumber()
;
; PURPOSE: To dial a telephone number using the computer's modem
;
; ARGUMENTS:
;    PhoneNumber: The telephone number to dial
;
; EXAMPLE:
;    Type the following in the Debug window to dial a phone number:
;
;       ? DialNumber("555-1212")
; ******************************************************************************
DialNumber(PhoneNumber)
{
   ; Ask the user to pick up the phone.
   MsgBoxTitle := "Dial Number"
   Msg := "Please pickup the phone and click OK to dial " . PhoneNumber
   ; MsgBoxType = MB_ICONINFORMATION + MB_OKCANCEL
   ; Icon Asterisk (info) = 64, OK/Cancel = 1
   MsgBox, 65, %MsgBoxTitle%, %Msg%
   IfMsgBox Cancel
      Return False
   ; Send the telephone number to the modem.
   RetVal := DllCall("Tapi32\tapiRequestMakeCall"
                  ,  "Str", PhoneNumber
                  ,  "Str", ""
                  ,  "Str", ""
                  ,  "Str", "")
   If RetVal < 0
   {
      Msg := "Unable to dial number " . PhoneNumber
      GoTo Err_DialNumber
   }
   Return True
   ; ***************************************************************************
   Err_DialNumber:      ; This is not an On Error routine.
   Msg := Msg . "`r`n" . "ReturnCode: " . RetVal . "`r`n"
        . "Make sure no other devices are using the Com port"
   ; MsgBoxType = MB_ICONSTOP
   ; Icon Hand (stop/error) = 16
   MsgBoxTitle := "Dial Number Error"
   MsgBox, 16, %MsgBoxTitle%, %Msg%
   Return False
}
; ******************************************************************************
tut sich doch was!
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M'o



Anmeldedatum: 28.12.2005
Beiträge: 85
Wohnort: Leipzig

BeitragVerfasst am: Do März 27, 2008 8:08 am    Titel: Antworten mit Zitat

Prima, ich danke Euch. Manchmal sieht man den Wald vor Bäumen nicht und schon der Codeschnipsel von Chucky lieferte das zum Funktionieren entscheidende... Wink

Viele Grüße
M'o
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de