
TAPI und PureBasic
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: TAPI und PureBasic
Hört auf dumme Witze zu machen. Man kann hier nicht jeden unter Generalverdacht stellen, der sich frisch im Forum angemeldet hat. 

Re: TAPI und PureBasic
Ist ja gut >Mecker Motz<. Komisch ist allenthalb das man sich anmeldet und die "PB 4.40" als Signatur einträgt und diese nach meinen "Witz" auf "PB4.50 Full" abändert.NicTheQuick hat geschrieben:Hört auf dumme Witze zu machen. Man kann hier nicht jeden unter Generalverdacht stellen, der sich frisch im Forum angemeldet hat.



Falls ich mich irre behaupte ich glatt das Gegenteil.

@ralle (siehe unten): Wie wäre es mit FINAL?

Zuletzt geändert von rolaf am 25.06.2010 11:29, insgesamt 1-mal geändert.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Re: TAPI und PureBasic
(OT)Niemand würde ernsthaft das Wort "Full" benutzen.
Dann greife ich mal polemisch in die Diskussion mit ein


(/OT)
-
- Beiträge: 7
- Registriert: 24.06.2010 14:37
- Wohnort: Cazes Mondenard Frankreich
Re: TAPI und PureBasic
Meine Güte,...
Was muss ich tun um etwas Hilfe zu bekommen?
Gibt es nen Geheimcode? Muss ich erst hinterm Computer nackich ne Zigarette rauchen,... als Mutprobe???
@Macros nein 4.4 sagt mir nix und ich wills glaub ich auch nicht wissen.....
@DrFalo keine Ahnung was du schon alles hier erlebt hast,.... aber um hier mal klar zu reden: Nach Deinem Kommentar musste ich denken, das Tapi und 4.4 nicht zusammen geht,... also aufgerüstet auf 4.5, neu eingetragen in die Signatur, und Deine "witziges" "Full" dazugeschrieben. Gut, das mag für einen langerfahrenen und unfehlbaren Vollblutprogrammierer naiv erscheinen,....
für mich einfach nur der Versuch mich hier mit meinem Problem zu präsentieren, in dem naiven Glauben du gäbest mir einen technischen Wink.
So,.... und wie war das denn nun mit dem TAPI??
Habe inzwischen mal mit TapiRequestMakeCall rumgebastelt (damit benutze ich die Wählhilfe).... das funktioniert für den Anruf,.... aber ich bekomme die Leitung dann nicht mehr getrennt (aus PB), und ausserdem kann ich nur auf einer Leitung (die vorher in der Wählhilfe eingetragen wurde) anrufen,... ich würde aber gerne mehrere Leitungen parallel benutzen also wäre der direkte Tapi zugriff schon am besten, denke ich....
Sebastian
ich habe Eure ganzen alten Storys nicht drauf,..... und habe auch nicht vor das Forum danach abzusuchenNiemand würde ernsthaft das Wort "Full" benutzen.
Was muss ich tun um etwas Hilfe zu bekommen?
Gibt es nen Geheimcode? Muss ich erst hinterm Computer nackich ne Zigarette rauchen,... als Mutprobe???
@Macros nein 4.4 sagt mir nix und ich wills glaub ich auch nicht wissen.....
@DrFalo keine Ahnung was du schon alles hier erlebt hast,.... aber um hier mal klar zu reden: Nach Deinem Kommentar musste ich denken, das Tapi und 4.4 nicht zusammen geht,... also aufgerüstet auf 4.5, neu eingetragen in die Signatur, und Deine "witziges" "Full" dazugeschrieben. Gut, das mag für einen langerfahrenen und unfehlbaren Vollblutprogrammierer naiv erscheinen,....
für mich einfach nur der Versuch mich hier mit meinem Problem zu präsentieren, in dem naiven Glauben du gäbest mir einen technischen Wink.
So,.... und wie war das denn nun mit dem TAPI??
Habe inzwischen mal mit TapiRequestMakeCall rumgebastelt (damit benutze ich die Wählhilfe).... das funktioniert für den Anruf,.... aber ich bekomme die Leitung dann nicht mehr getrennt (aus PB), und ausserdem kann ich nur auf einer Leitung (die vorher in der Wählhilfe eingetragen wurde) anrufen,... ich würde aber gerne mehrere Leitungen parallel benutzen also wäre der direkte Tapi zugriff schon am besten, denke ich....
Code: Alles auswählen
;Beispiel gefunden bei http://www.vbarchiv.net/tipps/tipp_646-telefonnummer-ueber-die-waehlhilfe-waehlen.html
Procedure Dial(sPhoneNumber.s,sRecipient.s,sComment.s = "")
sBuffer.s
nResult.l
;Wählhilfe starten und Telefonnummer wählen
nResult = tapiRequestMakeCall_(sPhoneNumber,"Tapitest", sRecipient, sComment)
;Rückgabewert auswerten
If nResult <> 0
;Fehler!
Select nResult
Case TAPIERR_NOREQUESTRECIPIENT
Debug "Diw Windows Wählhilfe ist nicht installiert oder konnte nicht gestartet werden!"
Case TAPIERR_REQUESTQUEUEFULL
Debug "Die Anrufschlange ist voll!"
Case TAPIERR_INVALDESTADDRESS
Debug"Ungültige Telefonnummer!"
Default
Debug "Sonstiger Fehler!"
Debug nresult
EndSelect
EndIf
EndProcedure
PB4.50 full / Windows XP / SP3
Re: TAPI und PureBasic
das auflegen aus pb heraus wird Dir so (tapiRequestMakeCall..) auch nicht so
einfach gelingen .. höchstens eventuell als ne Fernsteuerung per sendmessage_(..)
um das ganze tapie-gedöns komplett in pb "einzufangen" brauchst du wohl die Line Device Functions
guckst du hier mal
http://msdn.microsoft.com/en-us/library ... S.85).aspx
letztlich dann wohl enumerations um die Leitung zu bestimmen
und dann sowas in der art
lineopen
line dies und das und jenes
linemakecall
line drop
line close
wäre übrigens echt brauchbar, wenn das tapi-ding mal jemand mit pb angehen könnte (und den code
natürlich hier veröffentlicht)
einfach gelingen .. höchstens eventuell als ne Fernsteuerung per sendmessage_(..)
um das ganze tapie-gedöns komplett in pb "einzufangen" brauchst du wohl die Line Device Functions
guckst du hier mal
http://msdn.microsoft.com/en-us/library ... S.85).aspx
letztlich dann wohl enumerations um die Leitung zu bestimmen
und dann sowas in der art
lineopen
line dies und das und jenes
linemakecall
line drop
line close
wäre übrigens echt brauchbar, wenn das tapi-ding mal jemand mit pb angehen könnte (und den code
natürlich hier veröffentlicht)
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
-
- Beiträge: 7
- Registriert: 24.06.2010 14:37
- Wohnort: Cazes Mondenard Frankreich
Re: TAPI und PureBasic
Was ich noch gefunden habe , ist ne Lösung in VB6, die augenscheinlich alles kann was ich brauche, genaugenommen viel mehr, und wo die ganzen Funktionen und Handels und was weiss ich, wohl irgendwo integriert sind,....
http://www.shrinkwrapvb.com/vbtapi.htm
aber da wäre ich dann wieder beim grundsätzlichen Problem des Verständnisses der Callbacks und so.....
In wie weit wäre das denn möglich , anhand eines solchen Beispiels den Code für PB umzustricken??
@bobobo Ja genau so stell ichs mir ja auch vor,.....
Initialisierung mit lineInitializeEx_
Device öffnen mit lineOpen_
Dann meine schleife solange das programm läuft mit
anrufen mit lineMakeCall_
auflegen mit LineDrop_
und zum Abschliessen dann
Device schliessen mit LineClose_
und Line abmelden mit LineShutdown_
wenn ich das so im TAPI32 Browser mache, klappt das hervorragend
da sieht das so aus:
Sebastian
http://www.shrinkwrapvb.com/vbtapi.htm
aber da wäre ich dann wieder beim grundsätzlichen Problem des Verständnisses der Callbacks und so.....
In wie weit wäre das denn möglich , anhand eines solchen Beispiels den Code für PB umzustricken??
@bobobo Ja genau so stell ichs mir ja auch vor,.....
Initialisierung mit lineInitializeEx_
Device öffnen mit lineOpen_
Dann meine schleife solange das programm läuft mit
anrufen mit lineMakeCall_
auflegen mit LineDrop_
und zum Abschliessen dann
Device schliessen mit LineClose_
und Line abmelden mit LineShutdown_
wenn ich das so im TAPI32 Browser mache, klappt das hervorragend

da sieht das so aus:
Code: Alles auswählen
*** LOG au dem TAPI32 BROWSER
Calling lineInitializeEx
lphLineApp=x273980
hInstance=x1000000
lpfnCallback=x10158df
lpszFriendlyAppName=x6f444
lpdwNumDevs=x6f41c
lpdwAPIVersion=x6f4b0
->dwAPIVersion=x20000
lpInitExParams=x6f404
->dwOptions=x3
lineInitializeEx returned SUCCESS
num line devs = 9
Calling lineOpen
hLineApp=x800003dd
dwDeviceID=x0
lphLine=x2780d0
APIVersion=x20000
dwExtVersion=x0
dwCallbackInstance=x0
dwPrivileges=x1
dwMediaModes=x10
lpCallParams=x0
lineOpen returned SUCCESS
Calling lineMakeCall
hLine=x101b3
lphCall=x277b10
lpszDestAddress=x6f444
dwCountryCode=x0
lpCallParams=x0
lineMakeCall returned x10007
received LINE_REPLY
device=x0
cbInst=x0
param1=x10007,
param2=x0,
param3=x10018,
received LINE_CALLSTATE
device=x10018
cbInst=x0
param1=x10, DIALING
param2=x0,
param3=x0,
received LINE_CALLSTATE
device=x10018
cbInst=x0
param1=x200, PROCEEDING
param2=x0,
param3=x0,
received LINE_CALLINFO
device=x10018
cbInst=x0
param1=x2000, NUMMONITORS
param2=x0,
param3=x0,
received LINE_CALLSTATE
device=x10018
cbInst=x0
param1=x100, CONNECTED
param2=x0,
param3=x0,
received LINE_CALLSTATE
device=x10018
cbInst=x0
param1=x4000, DISCONNECTED
param2=x20, BUSY
param3=x0,
Calling lineDrop
hCall=x10018
lpsUserUserInfo=x6f444
dwSize=x12
lineDrop returned x100a2
received LINE_CALLSTATE
device=x10018
cbInst=x0
param1=x1, IDLE
param2=x0,
param3=x0,
lineGetCallStatus returned SUCCESS
Deallocating hCall x10018 (REPLY for requestID x100a2 might be filtered)
lineDeallocateCall returned SUCCESS
received LINE_REPLY
device=x0
cbInst=x0
param1=x100a2,
param2=x0,
param3=x0,
Calling lineClose
hLine=x101b3
lineClose returned SUCCESS
Calling lineShutdown
hLineApp=x800003dd
lineShutdown returned SUCCESS
Sebastian
PB4.50 full / Windows XP / SP3
Re: TAPI und PureBasic
Unable to Service Requestbobobo hat geschrieben:http://msdn.microsoft.com/en-us/library ... S.85).aspx
-
- Beiträge: 7
- Registriert: 24.06.2010 14:37
- Wohnort: Cazes Mondenard Frankreich
Re: TAPI und PureBasic
So,... weiter gehts,...
Mir ist es nicht klar was ich als Information in die Tapifunktion eintragen soll, bzw. wo ich die jeweiligen Handels finde und auslese....
Ich versuch mal meinen Problem etwas bildhafter darzustellen....
Sinn des ganzen ist es die LineInitialize dazu zu bringen, das sie "0" ausgibt.
(und nicht die Fehlercodes ...95 und ...98
Sebastian
Mir ist es nicht klar was ich als Information in die Tapifunktion eintragen soll, bzw. wo ich die jeweiligen Handels finde und auslese....
Ich versuch mal meinen Problem etwas bildhafter darzustellen....
Code: Alles auswählen
;Nur mal ein kleiner Test zum besseren Verständniss....
lphLineApp.l
hInstance.l
lpdwNumDevs.l
Procedure LineIniCallback(hDevice,dwMsg,dwCallbackInstance,dwParam1,dwParam2,dwParam3)
Debug hdevice
Debug dwMsg
Debug dwCallbackInstance
Debug dwParam1
Debug dwParam2
Debug dwParam3
; Hier wird Ihre Callback Prozedur abgearbeitet.
EndProcedure
; Die Daten die mir der TAPIBROWSER ausgibt:(also das sollte eigendlich hin und hergeschickt werden)
; lphLineApp=x273980
; hInstance=x1000000
; lpfnCallback=x10158df
; lpszAppName=x6f444
; lpdwNumDevs=x6f554
; test1 = lineConfigDialog_(0,0,"")
; Debug test1
test=lineInitialize_(lphLineApp,@hInstance,@LineIniCallback(),"Test",@lpdwNumDevs)
Debug test
(und nicht die Fehlercodes ...95 und ...98
Und ich habe weiterhin die Hoffnung, das, wenn ich erstmal das grundsätzliche Hin und her mit den Callbacks, Handeln und Pointern begriffen habe, dann klappts auch mit der Nachbarin... quatsch ,.... mit dem Rest der Geschichte.....Return Code: -2147483598)
Description TAPI error: Line error - parameter - A parameter (such as dwTollListOption, dwTranslateOptions, dwNumDigits, or a structure pointed
to by lpDeviceConfig) contains invalid values, a country code is invalid, a window handle is invalid, or the specified forward list parameter contains
invalid information.
Return Code: -2147483595
Description TAPI error: Line error - Invalid pointer - One or more of the specified pointer parameters (such as lpCallList, lpdwAPIVersion,
lpExtensionID, lpdwExtVersion, Iphlcon, IpLineDevCaps and IptoneList) are invalid or a required pointer to an output parameter is NULL.

Sebastian
PB4.50 full / Windows XP / SP3
Re: TAPI und PureBasic
Hier ist lphLineApp als out bezeichnet und
hInstance als in:
http://msdn.microsoft.com/en-us/library/ms894369.aspx
also so:
debug test -> 0
debug lphLineApp -> -2147482625
debug lpdwNumDevs -> 7
hInstance als in:
http://msdn.microsoft.com/en-us/library/ms894369.aspx
also so:
Code: Alles auswählen
;Nur mal ein kleiner Test zum besseren Verständniss....
lphLineApp.l
hInstance.l
lpdwNumDevs.l
Procedure LineIniCallback(hDevice, dwMsg, dwCallbackInstance, dwParam1, dwParam2, dwParam3)
Debug hdevice
Debug dwMsg
Debug dwCallbackInstance
Debug dwParam1
Debug dwParam2
Debug dwParam3
; Hier wird Ihre Callback Prozedur abgearbeitet.
EndProcedure
; Die Daten die mir der TAPIBROWSER ausgibt:(also das sollte eigendlich hin und hergeschickt werden)
; lphLineApp=x273980
; hInstance=x1000000
; lpfnCallback=x10158df
; lpszAppName=x6f444
; lpdwNumDevs=x6f554
; test1 = lineConfigDialog_(0,0,"")
; Debug test1
test = lineInitialize_(@lphLineApp, hInstance, @LineIniCallback(), "Test", @lpdwNumDevs)
Debug test
Debug lphLineApp
Debug lpdwNumDevs
debug lphLineApp -> -2147482625
debug lpdwNumDevs -> 7
PB v5.72 x86/x64
Windows 10 Pro 64bit
Windows 10 Pro 64bit
-
- Beiträge: 7
- Registriert: 24.06.2010 14:37
- Wohnort: Cazes Mondenard Frankreich
Re: TAPI und PureBasic
@Chris: Klasse, danke ...
Also, ich habe weiter gebastelt,... und jetzt hängt es an der Tapi-Negociation...
auch wie ich denke, das es weitergehen müsste, habe ich mal dazu geschrieben,....
Allerdings ist mir völlig klar, das das Script voll mit Fehlern ist,.... das Problem bleibt weiterhin das gleich,... ich kapiere nicht wie ich mit den ganzen Handels umgehen soll.
Ich habe als vorläufige Notlösung jetzt eine Variante mit nem externen Programm (Phoner und autostart) gebastelt,.... für erstmal geht das,.... aber da kriege ich nur eine Linie auf einmal ans laufen. Auf jeden Fall kann ich damit meine Hardware testen aber als entgültige Lösung ist das ein bischen dünn.
Aber wohlmöglich habe ich mich mit dem Tapi-Zeuch etwas übernommen.....
Bin also weiterhin für jede Hilfe Dankbar.
(und sollte jemand Spass daran haben,... mir ein bischen mehr bei dem TAPI part zu helfen,...da könnte ich mich mit z.B. ner Kiste gutem Cahorwein oder so revanchieren. (Ja, aus Frankreich!
)
Grüsse,
Sebastian
Also, ich habe weiter gebastelt,... und jetzt hängt es an der Tapi-Negociation...
auch wie ich denke, das es weitergehen müsste, habe ich mal dazu geschrieben,....
Allerdings ist mir völlig klar, das das Script voll mit Fehlern ist,.... das Problem bleibt weiterhin das gleich,... ich kapiere nicht wie ich mit den ganzen Handels umgehen soll.
Ich habe als vorläufige Notlösung jetzt eine Variante mit nem externen Programm (Phoner und autostart) gebastelt,.... für erstmal geht das,.... aber da kriege ich nur eine Linie auf einmal ans laufen. Auf jeden Fall kann ich damit meine Hardware testen aber als entgültige Lösung ist das ein bischen dünn.
Aber wohlmöglich habe ich mich mit dem Tapi-Zeuch etwas übernommen.....

Bin also weiterhin für jede Hilfe Dankbar.
(und sollte jemand Spass daran haben,... mir ein bischen mehr bei dem TAPI part zu helfen,...da könnte ich mich mit z.B. ner Kiste gutem Cahorwein oder so revanchieren. (Ja, aus Frankreich!

Grüsse,
Sebastian
Code: Alles auswählen
;Nur mal ein kleiner Test zum besseren Verständniss....
lphLineApp.l
hInstance.l
lpdwNumDevs.l
lphLine.l
lphCall.l
hline.l
m_APIversions.l
m_ExtAPIversions.l
m_ApplicationVersion .l ;'some TAPI calls need this instead of negotiated API version
m_LowAPI.l ;'default TAPI 1.3 (&H00010003)
m_HiAPI.l ; 'default TAPI 3.0 (&H00030000)
m_LastTAPIError.l
phonenumber.s = "201"
; das sind die TApi vorgaben, die ich nicht eingetragen bekomme....
; m_LowAPI = &H00010003 ; erstmal ausgestellt, da es sonst nicht kompiliert
; m_HiAPI = &H00010003
Dim m_APIversions.l(1)
Dim m_ExtAPIversions(1)
Procedure getlowapi()
LowAPI = m_LowAPI
EndProcedure
Procedure gethiapi()
HiAPI = m_LowAPI
EndProcedure
Procedure LineIniCallback(hDevice, dwMsg, dwCallbackInstance, dwParam1, dwParam2, dwParam3)
Debug hdevice
Debug dwMsg
Debug dwCallbackInstance
Debug dwParam1
Debug dwParam2
Debug dwParam3
; Hier wird Ihre Callback Prozedur abgearbeitet.
EndProcedure
;******* hier gehts los...
test = lineInitialize_(@lphLineApp, hInstance, @LineIniCallback(), "Test", @lpdwNumDevs)
Debug test
Debug lphLineApp
Debug lpdwNumDevs
;****** so, bis hierher alles super, nochmal Danke Chris
;todo: tapi negoc
If test <> 0
m_LastTAPIError = test
Else
If lpdwNumDevs < 1
Debug " no lines!"
EndIf
;negotiate and cache API versions for each line
ReDim m_APIversions.l(lpdwNumDevs - 1)
ReDim m_ExtAPIversions(lpdwNumDevs - 1)
For line = 0 To lpdwNumDevs - 1
test = lineNegotiateAPIVersion_(@lphLineApp, 0, m_LowAPI, m_HiAPI, @m_APIversions(line), lxid)
Debug "Rückgabe Tapi Negociation Line:"+ Str(line) + " " + Str(test)
If test <> 0
m_APIversions(line) = 0 ;no compatible API negotiated for this line
test = 0
Else ; das benötige ich glaube ich nicht
;also cache extension version (dev-specific features) if available
;,m_ExtAPIversions(line).dwExtensionID0 = lxid.dwExtensionID0
;,m_ExtAPIversions(line).dwExtensionID1 = lxid.dwExtensionID1
;,m_ExtAPIversions(line).dwExtensionID2 = lxid.dwExtensionID2
; ,m_ExtAPIversions(line).dwExtensionID3 = lxid.dwExtensionID3
;TODO! add call to lineNegotiateExtVersion()
;and save the highest negotiated version as our app version
If m_APIversions(line) > m_ApplicationVersion
m_ApplicationVersion = m_APIversions(line)
EndIf
EndIf
Next
EndIf
If test = 0 ;
;wieder die Vorgaben aus meinem TAPIBrowser hLineApp=x800003ff , dwDeviceID=x0 , lphLine=x2780d0, dwAPIVersion=x20000, dwExtVersion=x0,dwCallbackInstance=x0, dwPrivileges=x1dw,MediaModes=x10,lpCallParams=x0
test = lineOpen_(@hLineApp, 0, @lphLine, @dwAPIVersion,dwExtVersion, @LineIniCallback(), dwPrivileges, dwMediaModes, lpCallParams)
Debug "Rückgabe Lineopen:" +Str(test)
EndIf
test=0
If test = O
;und endlich wird gewählt...
If phonenumber = "" ;just get dialtone
test = lineMakeCall_(@hLine, @lphCall,"",@dwCountryCode,lpCallParams)
Else ;dial a number
test = lineMakeCall_(@hLine, @lphCall, phonenumber, @dwCountryCode,lpCallParams)
EndIf
If test > 0
;now placing call - completion will be signalled by a LINE_REPLY event in the callback
;store positive request identifier in class member variable for use in the callback handler
m_RequestingCall = test
Else
m_LastTAPIError = test
Debug "Fehler beiLinemakecall: "+ Str(m_LastTAPIError)
EndIf
EndIf
PB4.50 full / Windows XP / SP3