AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Ermitteln welches Gerät verbunden wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Ermitteln welches Gerät verbunden wurde

Ein Thema von k3kz0r · begonnen am 17. Mär 2013
Antwort Antwort
k3kz0r

Registriert seit: 9. Apr 2010
1 Beiträge
 
#1

Ermitteln welches Gerät verbunden wurde

  Alt 17. Mär 2013, 14:41
Hallo,

ich habe im Moment ein kleines Problem mit meinem PC.
In bestimmten Situationen wird mein System instabil und beginnt in regelmäßigen abständen einzufrieren. Dies lässt sich nur durch ein neu starten des Systems beheben.

Allerdings höre ich jedes mal bevor dies beginnt den Windows-sound das ein Gerät getrennt und wieder verbunden wurde.
Ich könnte mir also vorstellen das ich ein defektes Gerät am oder im PC habe.
Jetzt hat Windows keine vernünftige Funktion ein Log zu erstellen welche Geräte getrennt und verbunden wurden.
Daher will ich das jetzt mit einem kleinen Delphi Programm selbst erledigen.

Wie kann ich einfach nur (am liebsten als String) angezeigt bekommen, welche Hardware verbunden oder getrennt wurde?

Ich habe bereits gelesen das dies mit WM_DEVICECHANGE, DBT_DEVICEARRIVAL und DBT_DEVICEREMOVECOMPLETE möglich sein soll, allerdings bin ich längst nicht gut genug im Programmieren um zu verstehen wie ich diese funktionen nutzen kann.

Mit diesem Code hier kann ich schon auf das ereignis reagieren, allerdings habe ich keinerlei informationen was für ein Gerät es ist:
Code:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
  private
  procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMDeviceChange(var Msg: TMessage);
 const
 DBT_DEVICEARRIVAL = $8000; // system detected a new device
 DBT_DEVICEREMOVECOMPLETE = $8004; // device is gone
 var
 myMsg: string;
 begin
 inherited;
 case Msg.wParam of
 DBT_DEVICEARRIVAL: myMsg := 'Verbunden';
 DBT_DEVICEREMOVECOMPLETE: myMsg := 'Getrennt';
 end;
 ShowMessage(myMsg);
 end;

end.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz