Re: TAPI und PureBasic
Verfasst: 25.06.2010 10:56
Hört auf dumme Witze zu machen. Man kann hier nicht jeden unter Generalverdacht stellen, der sich frisch im Forum angemeldet hat. 

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.
(OT)Niemand würde ernsthaft das Wort "Full" benutzen.
ich habe Eure ganzen alten Storys nicht drauf,..... und habe auch nicht vor das Forum danach abzusuchenNiemand würde ernsthaft das Wort "Full" benutzen.
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
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
Unable to Service Requestbobobo hat geschrieben:http://msdn.microsoft.com/en-us/library ... S.85).aspx
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 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.
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
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