Autor |
Beitrag |
Tendl
Beiträge: 117
|
Verfasst: Di 05.07.05 18:16
Hallo Leute ich habe folgendes Problem:
Ich suche nach einem logischem Laufwerk, in meinem Fall z.B I:.
Habe ich es gefunden möchte ich wissen ob das LW mit subst I: .... definiert wurde.
Ist dies der Fall so möchte ich gerne wissen aus welcher Source das LW kommt.
Kann mir jemand weiterhelfen?
Danke Thomas
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 05.07.05 18:54
Zitat: |
C:\winxp\system32>subst /?
Weist einem Pfad eine Laufwerkbezeichnung zu.
SUBST [Laufwerk1: [Laufwerk2:]Pfad]
SUBST Laufwerk1: /D
Laufwerk1: Laufwerkbezeichnung, die dem Pfad zugewiesen werden soll.
[Laufwerk2:]Pfad Laufwerk und Pfad, die durch Laufwerk1: angesprochen
werden sollen.
/D Hebt die Zuordnung für das (virtuelle) Laufwerk1 wieder auf.
SUBST ohne Parameter zeigt die mit SUBST erstellten, virtuellen Laufwerke an.
C:\winxp\system32>subst i: C:\
C:\winxp\system32>subst
I:\: => C:\
|
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
maxk
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Di 05.07.05 19:45
Ich glaube er möchte es mittels Delphi machen
Einfach Suchfunktion benutzen: SUBST
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 05.07.05 19:58
wenn er es mittels delphi machen will soll er halt subst mit RUNCAPTURED starten
ich glaube nicht dass hier im forum jemand weiss, wie man das sonst noch machen kann
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
maxk
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Di 05.07.05 20:11
retnyg hat folgendes geschrieben: | ich glaube nicht dass hier im forum jemand weiss, wie man das sonst noch machen kann |
Hmm, das ist ja komisch. Ich hatte die Frage doch schonmal im Forum gestellt und darauf auch antworten bekommen. Tztztz
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:
| procedure VxDCall; external kernel32 index 1; function SubstQuery(DriveLetter: Char): string; var drvno: byte; buff: array[0..256] of char; lbuff: array[0..256] of char; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin lbuff[0]:=DriveLetter; lbuff[1]:=':'; lbuff[2]:=#0; buff[0]:=#0; QueryDosDevice(lbuff,buff,256); Result:=StrPas(buff); if Copy(Result,1,4) = '\??\' then Result:=Copy(Result,5,Length(Result)) else Result:=''; end else begin drvno:=Ord(UpperCase(DriveLetter)[1])-64; buff[0]:=#0; asm pushad push es xor ebx, ebx mov bh,2 mov bl,drvno lea edx,buff push 0 push 71AAh push 2A0010h call VxDCall pop es popad end; Result:=StrPas(buff); if Result = '' then Exit; asm pushad push ds push es xor ebx, ebx lea esi, buff lea edi, lbuff mov ecx,0 mov cl, 2 mov ch, 0 push ECX push 7160h push 2A0010h call VxDCall pop es pop ds popad end; Result:=StrPas(lbuff); end; end;
function SubstRemove(DriveLetter: Char): Boolean; var drvno: byte; Drive,Path: string; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin SetLength(Drive,3); Drive[1]:=DriveLetter; Drive[2]:=':'; Drive[3]:=#0; Path:=SubstQuery(DriveLetter); Result:=DefineDosDevice(DDD_REMOVE_DEFINITION,PChar(Drive),PChar(Path)); end else begin drvno:=Ord(UpperCase(DriveLetter)[1])-64; asm pushad push es xor ebx, ebx mov bh,1 mov bl,drvno push 0 push 71AAh push 2A0010h call VxDCall pop es popad end; Result:=SubstQuery(DriveLetter) = ''; end; end; |
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 05.07.05 20:15
errare humanum est.
wie man sieht aber ein ziemlich komplexer code ...
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Tendl
Beiträge: 117
|
Verfasst: Mi 06.07.05 09:05
Hallo maxk,
ich glaube Dein Code macht genau was ich will. Die Variante mit dem Abfangen der Antwort des "subst" Kommandos ohne Parameter hatte ich mir auch schon überlegt, war mir aber ziemlich sicher auch über die Win-Api ans Ziel zu kommen.
In meinem speziellen Fall soll ein Hintergrundprogramm immer wieder periodisch die Zuordnung prüfen, daher favourisiere ich Deine Lösung.
Ich werde den Code morgen mal einbauen.
Vielen Dank
Thomas
|
|
|