| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
M'o
Anmeldedatum: 28.12.2005 Beiträge: 85 Wohnort: Leipzig
|
Verfasst am: So März 16, 2008 8:27 pm Titel: TAPI-Anwendung via AHK - wer hat noch eine Idee dazu? |
|
|
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 |
|
 |
scoin
Anmeldedatum: 21.03.2006 Beiträge: 48 Wohnort: Leipzig
|
Verfasst am: Mo März 17, 2008 8:56 am Titel: |
|
|
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 |
|
 |
M'o
Anmeldedatum: 28.12.2005 Beiträge: 85 Wohnort: Leipzig
|
Verfasst am: Mo März 17, 2008 3:05 pm Titel: |
|
|
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...
Ansonsten - Grüße von Leipzig nach Leipzig  |
|
| Nach oben |
|
 |
M'o
Anmeldedatum: 28.12.2005 Beiträge: 85 Wohnort: Leipzig
|
Verfasst am: Mi März 26, 2008 5:13 pm Titel: |
|
|
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 |
|
 |
AGU Gast
|
Verfasst am: Mi März 26, 2008 5:31 pm Titel: |
|
|
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
|
Verfasst am: Mi März 26, 2008 5:33 pm Titel: |
|
|
Hallo AGU,
auch ohne die %-Zeichen tut es nicht... Dummerweise finden sich nirgendwo verwertbare Infos zur Tapi32.dll. Nur irgendwelcher kommerzieller Kram...
cIao
M'o |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Mi März 26, 2008 5:38 pm Titel: |
|
|
| 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
|
Verfasst am: Mi März 26, 2008 5:53 pm Titel: |
|
|
| 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 |
|
 |
BoBo¨ Gast
|
Verfasst am: Mi März 26, 2008 6:12 pm Titel: |
|
|
| In ToolTime liegt ne Quelle dazu ab ... |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 705 Wohnort: Powerland
|
Verfasst am: Mi März 26, 2008 7:13 pm Titel: |
|
|
| 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 |
|
 |
AGU Gast
|
Verfasst am: Mi März 26, 2008 9:33 pm Titel: |
|
|
| 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.
| 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.
________________
Gruß AGU |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1230 Wohnort: Berlin
|
Verfasst am: Do März 27, 2008 6:11 am Titel: |
|
|
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 |
|
 |
M'o
Anmeldedatum: 28.12.2005 Beiträge: 85 Wohnort: Leipzig
|
Verfasst am: Do März 27, 2008 8:08 am Titel: |
|
|
Prima, ich danke Euch. Manchmal sieht man den Wald vor Bäumen nicht und schon der Codeschnipsel von Chucky lieferte das zum Funktionieren entscheidende...
Viele Grüße
M'o |
|
| Nach oben |
|
 |
|