Avatar billede prodoc Nybegynder
21. december 2004 - 18:22 Der er 41 kommentarer og
1 løsning

Program opdager at der er en stick i USB porten og åbner "drevet"

Hej allesammen,
lige et lille spm inden jul...
Jeg sidder og leger med et lille program som har et billede i hjørnet som viser 1.jpg når der ikke er en "memory stick" tilsluttet USB porten og 2.jpg når der er tilsluttet en "memory stick" til USB porten...

Når der er tilsluttet en "memory stick" til USB porten, kan man trykke på billedet og der kommer et "panel" frem som viser alle filerne på USB drevet... (Det er ikke et Tpanel, men den som viser filerne i en gælden mappe i et slags panel..(sidder ikke lige ved en pc der har delphi))

Er der desuden nogen der kender et stykke kodet der laver en popup i "panelet" som gør at når man trykker på een af filerne så kommer popuppet op og viser: "Kopier til C:/" Kopier til "D:/Dokumenter/"??

Håber der er nogen der har prøver det før, da det er ved at drive mig til vanvid... :)

Har forresten været inde på et andet spm på eksperten:
http://eksperten.dk/spm/400853
men syntes ikke at hjælpe meget...
Avatar billede stoney Nybegynder
22. december 2004 - 09:46 #1
Avatar billede tolderlund Nybegynder
22. december 2004 - 09:55 #2
Avatar billede stoney Nybegynder
22. december 2004 - 10:13 #3
Tolderlund >

Er det ikke det samme ?

Stoney
Avatar billede prodoc Nybegynder
22. december 2004 - 10:31 #4
heh jo... :) har bidt mærke i det....
Men koden gider ikke lige værke lige nu siger Decleration incorrect... men har ikke sovet for meget i nat så checker det lige lidt senere... :)

Men stoney/tolderlund, hvordan konverterer man den sådan at den viser et billede når den er online og et andet når den er offline...

Og kan man gøre det sådan at den åbner "drevet" sådan at man ser filerne, og at der så kommer en menu op når man trykker på filerne, altså en popup?
Avatar billede prodoc Nybegynder
22. december 2004 - 10:48 #5
Nu har jeg faktisk prøvet et par gange, og den viser stadig det med Decleration incorrect.... der er vel ikke een af jer der vil sende den fulde source til mig på, pubstar@slyngelstuen.dk ?

forresten i kunne vel ikke sige mig om følgende er muligt:
Men stoney/tolderlund, hvordan konverterer man den sådan at den viser et billede når den er online og et andet når den er offline...

Og kan man gøre det sådan at den åbner "drevet" sådan at man ser filerne, og at der så kommer en menu op når man trykker på filerne, altså en popup?
Avatar billede prodoc Nybegynder
25. december 2004 - 19:22 #6
Stoney please... :)
Avatar billede stoney Nybegynder
25. december 2004 - 20:11 #7
Det er en component.

Gem det hele som U_Usb.pas og installer componenten.

Den har 2 events

onusbarrival og onusbremove

Altså den detecter når der bliver indsat/fjernet en USB device

Stoney
Avatar billede prodoc Nybegynder
26. december 2004 - 16:23 #8
ahhh.... :)
findes der nogle fingerregler for hvordan man kan se at det er en komponent??? eller er det bare noget man kan se når den ikke vil virke?:)

Prøver det lige når jeg kommer hjem...
TAK...
Avatar billede prodoc Nybegynder
26. december 2004 - 16:38 #9
Kan ikke forstå det den siger at der er en fatal fejl at den ikke man create output file .... altså dclusr70.bpl....
Avatar billede stoney Nybegynder
26. december 2004 - 19:51 #10
eks. sendt pr. mail

Stoney
Avatar billede prodoc Nybegynder
26. december 2004 - 21:27 #11
Stoney du er en gud.... det virker...
Men ved Create hvordan får man den til at fortælle hvad status er for USB stikket ved create.... ud over:

myusb := TComponentUSB.Create(form1);
myusb.OnUSBArrival := usb_in;
myusb.OnUSBRemove := usb_out

og findes der en måde hvorpå man kan se om det er en memory stick i USB porten, altså om der er "lavet" et nyt drev til USB stikket eller lignende?? og at man så kan gå ind på den?
Avatar billede stoney Nybegynder
27. december 2004 - 10:22 #12
Man kan ikke se om det er en USB stick eller en harddisk.
Prøv selv at se i stifinder, windows opfatter det som en harddisk.

Omkring drev kan du lave en "liste" over dine drev og når der sker en ændring
lave en ny liste og sammenligne og derved se hvad der er tilføjet/slettet af drev
og evt. starte stifinder på dette drev fra dit program.

Stoney
Avatar billede prodoc Nybegynder
28. december 2004 - 11:44 #13
Okay, men er det ikke muligt at programmet bare går ud fra at det er en memory stick, og så siger at den skal åbne (devType=DBT_DEVTYP_DEVICEINTERFACE) eller lign?

Du ved vel ikke hvordan man går sådan at den på Form create checker om der er en enhed i USB porten eller ej?
Avatar billede prodoc Nybegynder
28. december 2004 - 11:49 #14
altså at den åbner en Listview, hvor filerne på USBdrevet så bliver åbnet i?
Avatar billede kfz Nybegynder
15. januar 2005 - 12:23 #15
stoney>>kunne jeg få dig til at sende eksemplet til mig også...sidder med det samme problem...
Avatar billede kfz Nybegynder
15. januar 2005 - 12:23 #16
btw. min mail er kenneth_f_z@hotmail.com
Avatar billede prodoc Nybegynder
16. januar 2005 - 17:06 #17
KFZ> jeg kunne da også sende det til dig... :) men hvad er det du vil lave, måske kunne vi hjælpe hinanden.... for jeg er ikke kommet meget længere siden dette indlæg...??
Du ved vel ikke hvad der skal til for at man kan gå ind på et USB stick vha et ListView i ens applikation??
Avatar billede kfz Nybegynder
16. januar 2005 - 18:13 #18
prodoc>>tager lige en ting af gangen.
1. tak fordi du gider sende den.
2. mit problem er at jeg ikke kan gennemskue hvordan man bruger komponenten og får fat i den message den sender.
3. skal bruge det til et sikkerheds program hvor der skal ligge en fil på en usb-flashdisk, og meningen er at den selv skal kunne se hvis den bliver sat til, i tilfælde af at disken ikke var sat i når man starter computeren, og brugeren ikke har adgang til noget andet end mit program.
4. mht. dit problem så tror jeg jeg skal bruge noget i den stil, ellers kan jeg da lige prøve at finde ud af noget.
Avatar billede prodoc Nybegynder
17. januar 2005 - 12:53 #19
Jo mange tak, jeg sidder ikke lige hos min privat computer lige nu men kommer hjem i aften, så sender den der... Men ville da meget gerne se dit projekt når det var færdigt.. :) ( pubstar@slyngelstuen.dk ), men igen sender det lige i aften
Avatar billede kfz Nybegynder
23. januar 2005 - 22:05 #20
fandt en helt anden løsning, som også finder bogstavet på det drev der sender beskeden...poster det nok i morgen.
Avatar billede prodoc Nybegynder
23. januar 2005 - 23:15 #21
Okay, lyder godt :)
Endnu engang tak!
Avatar billede prodoc Nybegynder
29. marts 2005 - 22:05 #22
kfz> Hvordan går det med programmet? Jeg kunne vel ikke få dit til at svare hvad enten du har fundet en løsning eller ej.. :) Så jeg ikke sætter mine forhåbninger for højt op...? :)
Avatar billede kfz Nybegynder
29. marts 2005 - 22:34 #23
jeg har løsningen liggende, men kan bare ikke lige finde den, og har lige været på skiferie osv. men prøver at finde det i løbet af ugen og så lover jeg at du hører fra mig....
Avatar billede pfp Nybegynder
30. marts 2005 - 16:09 #24
kfz> tusind tak for det!
Avatar billede prodoc Nybegynder
30. marts 2005 - 16:28 #25
Hov undskyld skrev fra en vens computer... men igen tusing tak for det kfz!! :)
Avatar billede kfz Nybegynder
05. april 2005 - 00:03 #26
det blev sendt i går eller forgårs...håber du kan bruge det
Avatar billede prodoc Nybegynder
06. april 2005 - 10:12 #27
Hej Kfz,
mit internet har været nede et par dage, men jeg har ikke modtaget noget på mailen? jeg kunne vel ikke få dig til at sende det igen?
( pubstar@slyngelstuen.dk )
Avatar billede prodoc Nybegynder
14. april 2005 - 15:01 #28
kfz?
Avatar billede kfz Nybegynder
17. april 2005 - 18:06 #29
jo...sender det i løbet af et par dage...skal lige finde det frem igen :)
Avatar billede prodoc Nybegynder
17. april 2005 - 20:21 #30
Mange tak for det, ville ikke lyde påmasende... :)
men bare send det til pubstar@slyngelstuen.dk
Avatar billede kfz Nybegynder
21. april 2005 - 15:09 #31
så er den sendt igen, håber du får den denne gang :)
Avatar billede prodoc Nybegynder
21. april 2005 - 17:58 #32
Hej Kfz,
så fík jeg den... tusind tak, sender lige en mail til dig med et spm... :)
Laver du ikke lige et svar! :)
Avatar billede kfz Nybegynder
21. april 2005 - 22:47 #33
jo, men kan du da bruge det??, for så skal det nok lægges op på eksperten...
Avatar billede prodoc Nybegynder
22. april 2005 - 16:06 #34
Skal nok lægge det op.... har lige fået installeret Delphi igen, så kigger lige på det!
Avatar billede prodoc Nybegynder
22. april 2005 - 16:14 #35
Du får lige dine points nu.. men håber det er i orden hvis jeg stiller dig nogle spm senere, skal lige have mit USB stick tilbage fra en bekendt... Før kunne jeg bare checke om det virkede ved at hive min mus ud og så sætte den ind igen (USB mus) :)
Koden kommer lige her:
Avatar billede prodoc Nybegynder
22. april 2005 - 16:15 #36
Det ene eksempel:

unit cd;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    label1: TLabel;
  private
    procedure WMDeviceChange(var Msg: TMessage); message WM_DeviceChange;
    { Private declarations }
  public
    { Public declarations }
  end;

const
  DBT_DeviceArrival = $8000;
  DBT_DeviceRemoveComplete = $8004;
  DBTF_Media = $0001;
  DBT_DevTyp_Volume = $0002;

type
  PDevBroadcastHdr = ^TDevBroadcastHdr;
  TDevBroadcastHdr = packed record
    dbcd_size: DWORD;
    dbcd_devicetype: DWORD;
    dbcd_reserved: DWORD;
  end;

type
  PDevBroadcastVolume = ^TDevBroadcastVolume;
  TDevBroadcastVolume = packed record
    dbcv_size: DWORD;
    dbcv_devicetype: DWORD;
    dbcv_reserved: DWORD;
    dbcv_unitmask: DWORD;
    dbcv_flags: Word;
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}



function GetDrive(pDBVol: PDevBroadcastVolume): string;
var
  i: Byte;
  Maske: DWORD;
begin
Maske := pDBVol^.dbcv_unitmask;
for i := 0 to 25 do
begin
  if (Maske and 1) = 1 then
  Result := Char(i + Ord('A')) + ':';
  Maske := Maske shr 1;
end;
end;

procedure TForm1.WMDeviceChange(var Msg: TMessage);
var
  Drive: string;
begin
  case Msg.wParam of
    DBT_DeviceArrival:
      if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_volume then
      begin
        Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
        label1.Caption := 'USB device inserted in Drive ' + Drive;
      end;
    DBT_DeviceRemoveComplete:
      if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_volume then
      begin
        Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
        label1.Caption := 'USB device removed from Drive ' + Drive;
      end;
  end;
end;


end.
Avatar billede prodoc Nybegynder
22. april 2005 - 16:15 #37
Det andet eksempel:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  typ: Integer;
  s:  string;
begin
  s  := edit1.Text + ':\';
  typ := GetDriveType(PChar(s));
  if Typ <> 0 then case typ of
      DRIVE_REMOVABLE:
        begin
          ShowMessage('Drive Removable');
        end;
      DRIVE_FIXED:
        begin
          ShowMessage('Harddisk');
        end;
      DRIVE_CDROM:
        begin
          ShowMessage('CD ROM Drive');
        end;
      DRIVE_RAMDISK:
        begin
          ShowMessage('RAM Drive');
        end;
      DRIVE_REMOTE:
        begin
          ShowMessage('Remote Drive');
        end;
    end;
end;


end.
Avatar billede prodoc Nybegynder
22. april 2005 - 17:19 #38
Jeg har lidt problemer med det andet program... der sker ikke noget når jeg putter USB sticket i?
Avatar billede kfz Nybegynder
23. april 2005 - 00:05 #39
det er fordi du selv skal vælge drevet som den er sat i, det får du af det første program, de kan relativt nemt sættes sammen, men det har jeg ikke haft behov for, så derfor er det bare 2 eksempler, og stil endelig flere spørgsmål hvis du har nogle.
Avatar billede prodoc Nybegynder
23. april 2005 - 20:06 #40
Det er self. nemt at sige bagefter men nåå ja, kan jeg faktisk godt se nu... :)
Men jeg har endnu et lille spørgsmål... findes der ikke en DBT sætning hvor den ser om "DBT_DEVICEINSERTED" sådan at den checker om der allerede er en USB stick i?
Avatar billede prodoc Nybegynder
23. april 2005 - 20:10 #41
Jeg tænkte først på bare at gøre det sådan at den skriver til en memo eller lign, at når den er inserted så skriver den 1 og når den bliver hevet ud så skriver den 0. Men så kom jeg i tanke om at hvis USB stick'et bliver hevet ud når computeren er slukket så kan den jo ikke ændre i værdierne (1 eller 0) og så når man starter den igen så ville den sikkert tro at USB stick'et stadig ville være sat i...
Avatar billede prodoc Nybegynder
30. april 2005 - 02:06 #42
...?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester