Autor |
Beitrag |
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 02.11.16 23:27
- Nachträglich durch die Entwickler-Ecke gelöscht -
Zuletzt bearbeitet von Frühlingsrolle am Fr 30.06.17 14:23, insgesamt 13-mal bearbeitet
Für diesen Beitrag haben gedankt: Delphi-Laie, t.roller
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 03.11.16 14:21
- Nachträglich durch die Entwickler-Ecke gelöscht -
Zuletzt bearbeitet von Frühlingsrolle am Fr 30.06.17 18:41, insgesamt 5-mal bearbeitet
|
|
Delphi-Laie
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 17.03.17 00:13
Frühlingsrolle hat folgendes geschrieben : | Das im Anhang enthaltene Package ist sowohl auf älteren Delphi Versionen (D7 PE) als auch auf neueren Versionen (D10.1 Starter) installierbar. |
Es ist auch schon auf Delphi 6 installierbar.
Delphi 5 kommt hingegen mit dem Befehl
Delphi-Quelltext 1: 2: 3:
| requires rtl, vcl; |
nicht zurecht, findet die Packages nicht. Warum, weiß ich nicht. "requires" kennen nämlich auch Delphi 5 und sogar Delphi 4 schon.
Edit: Vorher mußte ich noch
Delphi-Quelltext
auskommentieren bzw. entfernen, also für den Compiler unsichtbar machen.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 17.03.17 00:38
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: Delphi-Laie
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: Fr 17.03.17 01:20
Man sollte noch einen Versions-Hinweis einbauen, z.B. so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| ... function GetFreeSize(ADriveLetter: Char): Int64; function GetDriverVersion : String; procedure GetDrives(AList: TStrings; ADriveType: ShortInt); overload; procedure GetDrives(AList: TStrings; ADriveType: TDriveTypes); overload; property Count: Integer read GetCount; property Info[Index: Integer]: TDriveInfo read GetDriveInfo; published property DriveLetter: string read FDriveLetter write SetDriveLetter; property DriveType: TDriveTypes read FDriveType write SetDriveType; property Eject: Boolean read FEject write SetEject; property DriverVersion: String read GetDriverVersion; end; ... function TfrDrive.GetDriverVersion : String; begin Result:= '3.0'; end; procedure TForm1.FormCreate(Sender: TObject); begin caption:= frDrive1.GetDriverVersion; end; |
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 17.03.17 02:03
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
galagher
Beiträge: 2522
Erhaltene Danke: 44
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 18.03.17 23:10
Frühlingsrolle hat folgendes geschrieben : | Hallo Forum
Allgemeines:
TfrDrive ist eine nicht-visuelle Delphi Komponente, die einem Anwender dabei helfen soll:
- Laufwerke zu ermitteln und aufzulisten
- (externe) Laufwerke zu trennen / auszuwerfen
- gültige Laufwerke zu erkennen
>> Neu <<
- Laufwerk-Informationen auszulesen |
Finde ich sehr interessant! So etwas suche ich gerade, könnte es gut gebrauchen, wenn es "automatisch" erkennt, wenn ich zB. einen USB-Stick anstecke, so, wie der Windows-Explorer das macht, also "bemerkt", dass das entsprechende Laufwerk jetzt bereit ist und beim Abziehen des Sticks auch dies erkennt.
Kann die Komponente das?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Delphi-Laie
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Sa 18.03.17 23:42
galagher hat folgendes geschrieben : | So etwas suche ich gerade, könnte es gut gebrauchen, wenn es "automatisch" erkennt, wenn ich zB. einen USB-Stick anstecke, so, wie der Windows-Explorer das macht, also "bemerkt", dass das entsprechende Laufwerk jetzt bereit ist und beim Abziehen des Sticks auch dies erkennt.
Kann die Komponente das? |
Probiere es doch einfach aus!
Nach meinen bescheidenen Kenntnissen ist so etwas (konkret: systemweite Überwachung bestimmter Ereignisse) nur über einen globalen Hook möglich, demnach benötigt man eine Dll-Datei. Hat diese trotzdem sehr gute Komponente jedoch nicht. Deshalb dürfte es nach meiner vorsichtigen Einschätzung damit nichts werden.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 18.03.17 23:51
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: Sa 18.03.17 23:58
Geht ohne grossen Aufwand:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104:
| unit Unit1; interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DBT, Vcl.StdCtrls;
type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private UsbNotifyInfo : TDevBroadcastDeviceinterfaceA; UsbDeviceNotificationHandle : Pointer; Procedure UsbDeviceChangeNotification(Var Msg : TMessage); MESSAGE WM_DEVICECHANGE; public Procedure RegisterUsbNotification; Procedure UnregisterUsbNotification; end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure MM(s:string); begin Form1.Memo1.lines.add(s); end;
procedure TForm1.FormCreate(Sender: TObject); begin RegisterUsbNotification; end;
procedure TForm1.FormDestroy(Sender: TObject); begin UnregisterUsbNotification; end;
Procedure TForm1.RegisterUsbNotification; Var Error : Cardinal; Begin ZeroMemory(@UsbNotifyInfo, sizeof(UsbNotifyInfo)); UsbNotifyInfo.dbcc_size := sizeof(TDevBroadcastDeviceInterfaceA); UsbNotifyInfo.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE; UsbNotifyInfo.dbcc_reserved := 0; UsbNotifyInfo.dbcc_classguid := StringToGuid('{A5DCBF10-6530-11D2-901F-00C04FB951ED}'); UsbDeviceNotificationHandle := RegisterDeviceNotification(self.Handle, @UsbNotifyInfo, Cardinal(0)); If UsbDeviceNotificationHandle = NIL Then Begin Error := GetLastError; ShowMessage(Format('Registering Device Notification failed, error code: %d', [Error])); End; End;
Procedure TForm1.UnregisterUsbNotification; Begin If (UsbDeviceNotificationHandle <> NIL) Then Begin UnregisterDeviceNotification(UsbDeviceNotificationHandle); End; End;
Procedure TForm1.UsbDeviceChangeNotification(Var Msg : TMessage); Var device : PDevBroadcastHdr; DeviceInfoBlock : PDevBroadcastDeviceInterface; MyDevice : String; Begin If Msg.Msg = WM_DEVICECHANGE Then Begin Winapi.windows.Beep(2000,50); If Msg.WParam = DBT_DEVICEREMOVECOMPLETE Then Begin device := PDevBroadcastHdr(Msg.lParam); If device.dbch_devicetype = DBT_DEVTYP_DEVICEINTERFACE Then Begin DeviceInfoBlock := PDevBroadcastDeviceInterface(Msg.LParam); MyDevice := String(Pchar(@DeviceInfoBlock.dbcc_name)); MyDevice := Uppercase(MyDevice); MM('REMOVAL: '+#13#10+MyDevice); End; End Else If Msg.WParam = DBT_DEVICEARRIVAL Then Begin device := PDevBroadcastHdr(Msg.lParam); If device.dbch_devicetype = DBT_DEVTYP_DEVICEINTERFACE Then Begin DeviceInfoBlock := PDevBroadcastDeviceInterface(Msg.LParam); MyDevice := String(Pchar(@DeviceInfoBlock.dbcc_name)); MyDevice := Uppercase(MyDevice); MM('ARRIVAL: '+#13#10+MyDevice); End; End; End; End;
end. |
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: galagher
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 19.03.17 01:28
- Nachträglich durch die Entwickler-Ecke gelöscht -
Zuletzt bearbeitet von Frühlingsrolle am Fr 30.06.17 14:09, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: galagher
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: So 19.03.17 08:04
Leider stürzt das Programm ab bei FOnDeviceConnected und FOnDeviceDisconnected.
Version fehlt: function GetVersion: string; muss unter public
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 19.03.17 13:10
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: So 19.03.17 20:33
Crash beim Abziehen und/oder Anstecken eines USB-Sticks.
Einloggen, um Attachments anzusehen!
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 19.03.17 20:50
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: So 19.03.17 20:53
Das ist nicht die Ursache.
Einloggen, um Attachments anzusehen!
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 19.03.17 21:06
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: So 19.03.17 21:19
|
|
t.roller
Beiträge: 118
Erhaltene Danke: 34
|
Verfasst: So 19.03.17 21:27
Seltsam: Deine EXE funktioniert, die unveränderte Compilation mit XE7 führt zum Absturz.
Einloggen, um Attachments anzusehen!
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 19.03.17 21:30
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|