FORUM
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Skype

 
Neues Thema eröffnen   Neue Antwort erstellen    PBUGG.DE Foren-Übersicht -> API Calls
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Beiträge der letzten Zeit anzeigen:   
Autor Nachricht
JRe_LIT



Anmeldungsdatum: 14.09.2009
Beiträge: 4

BeitragVerfasst am: Donnerstag 17. Sep.2009 7:41    Titel: Skype Antworten mit Zitat

Hallo alle zusammen,

seit kurzem arbeite ich mit Powerbuilder. Mein derzeitiges Hauptaufgabengebiet ist debuggen von bestehendem Code. Nun bin ich an ein Thema geraten, bei dem ich nicht weiterkomme und hoffe, dass sich hier einer vielleicht damit auskennt.

Und zwar soll in eine Anwendung Skype integriert werden. Der bisherige Code wirft die Fehlermeldung, dass auf die externe Eigenschaft "Currentuserstatus" nicht zugegriffen werden kann. Jedoch wird Skype gestartet, wenn die Überprüfung bringt, dass es noch nicht an ist. Somit müsste eine Verbindung aufgebaut sein.

Hat jemand eine Idee, woran das liegen kann?

Viele Grüße
Jen

Code:
integer iResult, iresult1, iresult2
oleObject oCall, oUser, oSkype
oSkype = CREATE OLEObject


// Versuch mit COM/OLE Objekt zu verbinden
iResult = oSkype.ConnectToObject("Skype4COM.Skype","Skype_")

if iResult <> 0 then
   iResult = oSkype.ConnectToNewObject("Skype4COM.Skype")
else
   // DDL Registrieren
   run("regsvr32 Skype4COM.dll")
   Messagebox("Skype","Die Skype-Schnittstelle wird neu registriert.")
   iResult1 = oSkype.ConnectToObject("Skype4COM.Skype","Skype_")
   if iresult1 <> 0 then
      Messagebox("Skype","Skype-Schnittstelle konnte nicht initialisiert werden!")
   end if
   iResult = oSkype.ConnectToNewObject("Skype4COM.Skype")
end if

if iResult = 0 then

// Declare the following Skype constants:
int cUserStatus_Offline,cUserStatus_Online, cCallStatus_Ringing, cCallStatus_Inprogress, cCallStatus_Failed, cCallStatus_Refused, cCallStatus_Cancelled, cCallStatus_Finished, cCallStatus_Busy, cAttachmentStatus_Available
cUserStatus_Offline = oSkype.Convert.TextToUserStatus("OFFLINE")
cUserStatus_Online = oSkype.Convert.TextToUserStatus("ONLINE")
cCallStatus_Ringing = oSkype.Convert.TextToCallStatus("RINGING")
cCallStatus_Inprogress = oSkype.Convert.TextToCallStatus("INPROGRESS")
cCallStatus_Failed = oSkype.Convert.TextToCallStatus("FAILED")
cCallStatus_Refused = oSkype.Convert.TextToCallStatus("REFUSED")
cCallStatus_Cancelled = oSkype.Convert.TextToCallStatus("CANCELLED")
cCallStatus_Finished = oSkype.Convert.TextToCallStatus("FINISHED")
cCallStatus_Busy = oSkype.Convert.TextToCallStatus("BUSY")
cAttachmentStatus_Available = oSkype.Convert.TextToAttachmentStatus("AVAILABLE")
   
CONSTANT integer MAXIMIZED = 3
CONSTANT integer MINIMIZED = 2
CONSTANT integer NORMAL = 1
CONSTANT boolean WAIT = TRUE
CONSTANT boolean NOWAIT = FALSE
      
// Start the Skype client:

If Not oSkype.Client.IsRunning Then
   Oleobject Hresult
   Hresult = oSkype.Client.Start(NORMAL,WAIT)
   Messagebox("Skype","Skype wird gestartet. ~nBitte haben Sie Geduld, bis der 'ONLINE'-Status erreicht ist.",Exclamation!)
   if Not oSkype.CurrentUserStatus = cUserStatus_Online then
      oSkype.ChangeUserStatus(cUserStatus_Online)
   end if
End If
   

// The PlaceCall command will fail if the user is offline. To avoid failure, check user status and change to online if necessary:
If  oSkype.CurrentUserStatus = cUserStatus_Offline Then
   oSkype.ChangeUserStatus(cUserStatus_Online)
End If
...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dr.Pibble



Anmeldungsdatum: 27.02.2004
Beiträge: 346
Wohnort: Mülheim a.d. Ruhr

BeitragVerfasst am: Mittwoch 23. Sep.2009 22:56    Titel: Antworten mit Zitat

Hi Jen,

hab's mal probiert.

Es klappt wenn Skype ordentlich gestartet wurde und innerhalb der Skype Optionen der aufrufenden Anwendung der Zugriff auf Skype erlaubt wurde.

Das Ganze muss bei erstmaligen Zugriff der Anwendung auf Skype je nach TimeOut recht zügig innerhalb der Skype GUI durch den Benutzer erlaubt werden.

Ist es einmal eingestellt, so funktioniert es dann immer.

Im Grunde ist der Laufzeitfehler beim Zugriff auf den Status mit einem "access denied" zu vergleichen.

Besser wäre es, in einer Schleife mit einem Try Catch den Zugriff zu versuchen und dem Benutzer einen Hinweistext und eine Abbruch-Möglichkeit zu geben.
Benutzermeldung
"Bitte warten Sie..blah blah
und
bla blah .. Zugriff erlauben ... blah blah."
Buttons: "Erneut versuchen" "Abbrechen".

_________________
Happy Coding

Dr.Pibble

http://pbminer.dwox.com/
http://pbwebeasy.org/pbwebeasy/Index.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
JRe_LIT



Anmeldungsdatum: 14.09.2009
Beiträge: 4

BeitragVerfasst am: Donnerstag 24. Sep.2009 8:10    Titel: Antworten mit Zitat

Hallo,

SUPER! Danke für deine Hilfe, jetzt funktioniert es wie gewünscht!!!

Viele Grüße
Jen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Neues Thema eröffnen   Neue Antwort erstellen    PBUGG.DE Foren-Übersicht -> API Calls Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB © 2001, 2005 phpBB Group