Hallo, benutzt hier jemand die API BluetoothAuthenticateDevice und hat Windows 10? Ich habe ein merkwürdiges Problem: Wenn die Anwendung im Vordergrund ist, funktioniert es prima. Wenn die Anwendung im Hintergrund ist, stürzt sie ab... Unter Windows 7 ist alles einwandfrei. Ich frage mich jetzt, ob das ein bekanntes Problem unter Windows 10 ist oder ob nur ich betroffen bin...
Was bedeuten für Dich "Vordergrund" und "Hintergrund"? Aktives/inaktives Fenster oder anderes Benutzerkonto? Und was sagt Dein Debugger, wenn die Anwendung abstürzt? Sofern Du nur passiven Zugang zum Windows-10-Rechner hast, kannst Du Dir dort auch aus c:\programdata\microsoft\windows\wer einen Crashdump holen und den auf Deinem Entwicklungssystem in den Debugger laden. Achja, womit ist Deine Anwendung geschrieben? (Sprache, Compiler)
Hmmm:
1 | BluetoothAuthenticateDevice: 6 (0x6) Das Handle ist ungültig |
2 | BluetoothAuthenticateDevice: 6 (0x6) Das Handle ist ungültig |
Schau Dir mal Deine Fehlerbehandlung an. Abschmiern tut hier (Windows 10, Delphi XE6 Win32) nix.
Habe ein älteres Delphi, wobei die API innerhalb von try...except steht. Wenn das Fenster während des Aufrufs im Hintergrund ist, crasht die Anwendung. Was der Debugger sagt, gucke ich nachher mal. Bisher bin ich damit aber auf keinen grünen Zweig gekommen.
Die API scheint zu crashen, sobald das Gerät antwortet...
Das ist eher unwahrscheinlich. Woher soll die API wissen, was Dein Fenster macht? Zeige Deinen Code.
Du könntest mal die Struktur "DI" ebenfalls sauber initialisieren, d.h. komplett auf 0 setzen, bevor Du die Größe einträgst. Mit der Struktur "DP" machst Du's ja auch. Ansonsten steht in https://msdn.microsoft.com/de-de/library/windows/desktop/aa362770%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396, daß seit Vista SP2 statt BluetoothAuthenticateDevice besser BluetoothAuthenticateDeviceEx verwendet werden soll.
Auch mit "sauber" initialisiertem DI crasht es. Es passiert ja auch nicht sporadisch oder so, sondern zuverlässig immer, wenn das Fenster im Hintergrund ist. Wenn es im Vordergrund ist, funktioniert alles einwandfrei. Das mit der Ex-Funktion glaube ich nicht. Unter Win 7 geht es ja auch. Sobald ich weiß, wie ich es unter Delphi implementieren muss, versuche ich es mal. Hat es sonst schon einmal jemand probiert?
Tom schrieb: > Das mit der Ex-Funktion glaube ich nicht Du glaubst nicht, daß Microsoft schreibt, daß man diese Funktion verwenden soll? Nun, da steht im /Wortlaut/: When developing for Windows Vista SP2 and Windows 7 the use of BluetoothAuthenticateDeviceEx is recommended. wenn für Vista SP2 und Windows 7 entwickelt wird, wird der Gebrauch von BluetoothAuthenticateDeviceEx empfohlen. Klar, das ist nicht die Ursache Deines Problemes. Ganz sicher nicht. Wenn Dein Programm in Abhängigkeit von der Fensterpositionierung "crasht", Du aber für die Funktion BluetoothAuthenticateDevice gar kein Fensterhandle angibst, dann kann das "crashen" Deines Programmes auch nichts damit zu tun haben. Oder hat Dein "eingedampftes Beispiel" mit Deinem Code dann doch eher weniger zu tun? "Crasht" denn Dein "eingedampftes Beispiel" auch?
Delphi inkl. Debugger hängt. Vielleicht mache ich auch irgendwas falsch. :/ Deswegen die Hoffnung, dass es sich mal ein Profi anguckt.
Ich habe das Projekt mal nach Lazarus / Free Pascal konvertiert und angehängt. Nach einem Klick auf den Button wird das Fenster automatisch in den Hintergrund geschickt, um das Problem zu provozieren. Dann startet der Suchvorgang. Es werden Bluetooth-Geräte gesucht und versucht, mit der Pin 1234 zu koppeln. Dabei (während des Koppelns) tritt der Crash auf, zumindest bei mir unter Windows 10. Wer will, kann es ja auch mal versuchen. Ich wäre euch sehr verbunden, denn ich weiß echt nicht mehr weiter!
Bietet Deine Programmierumgebung denn keinen Debugger?
Ich darf auf dem Win10-Rechner nichts ändern. Dort ist keine Programmierumgebung installiert.
Und einen anderern Rechner, mit Windows 10, hast du nicht zur Verfügung?! Ich finde es eher amüsant, das du ein Programm für Win10 entwickelst aber kein Zugriff auf Win10 hast.
Nun, wenn Dein Programm "crasht", dann kann Windows dazu gebracht werden, einen Speicherabzug und Stackdump zu erzeugen. Das kann man dann auf das Entwicklungssystem übertragen und dort in den Debugger laden.
Es wurden auch schon VMs erfunden, da drin kannste Win 10 plus Debugger installieren.
Tom schrieb: > Ich habe das Projekt mal nach Lazarus / Free Pascal konvertiert und > angehängt. Nach einem Klick auf den Button wird das Fenster automatisch > in den Hintergrund geschickt, um das Problem zu provozieren. Dann > startet der Suchvorgang. Es werden Bluetooth-Geräte gesucht und > versucht, mit der Pin 1234 zu koppeln. Dabei (während des Koppelns) > tritt der Crash auf, zumindest bei mir unter Windows 10. Ich habe das in Delphi XE6 ausprobiert, kein Crash. Weder mit '1234' noch mit dem korrekten Pin. Der Code lädt implizit "bthprops.cpl". Wenn das durch irgendwas herstellerspezifisches verschlimmbessert wurde, könnte der Fehler auch da liegen. Ich könnte mir durchaus auch vorstellen das Dein Gerät beim Pairing irgendwas sendet was Windows durcheinander bringt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.