Toon posts:

[VB.NET 2005] Locatie van map weten.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goede avond allemaal,

ik ben op dit moment bezig met een eigen programma te schrijven waarmee ik mappen kan beveiligen met een wachtwoord.
Hoe gaat dit in zijn werk, ik klik met de rechtermuisknop op een map en in die lijst staat er nu een extra commando 'beveiligen', wanneer ik hier op klik opent mijn programma zich.
Nu zou mijn programma moeten weten op welke map ik geklikt heb.

Stel: Ik klik op de map 'System32' in de map: 'C:\Windows\'

Ik gebruik op dit moment volgende code:

Imports VB = Microsoft.VisualBasic
Imports System.io

Private Sub frmLock_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Hier moet nog code komen om te weten welke map ik zal beveiligen.
Dim strpath As String
strPath = Directory.GetCurrentDirectory
End Sub


Nu wat geeft strPath dan?

C:\Windows

Ik zou als resultaat dus C:\Windows\System32 moeten hebben, hopelijk heeft er hier iemand een ideetje hoe ik dat kan oplossen.

Dank bij voorbaat.

  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
't Is een antwoord van de klok-en-de-klepel, maar kan je de aangeklikte map niet aan het commando beveiligen toevoegen en dan binnen VS de commandline uitlezen?
Ooit zoiets gezien geloof ik maar weet 't niet meer helemaal...

Vlinders moet je volgen, niet vangen...


  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 27-01 12:20

CodeIT

Code IT

In het shell menu in Explorer kun je volgens mij met %1 de locatie van een map/bestand meegegeven aan een programma. Die argumenten kun je vervolgens uitlezen in je applicatie (via Application Events bijvoorbeeld)
@hieronder: Ik ging er eigenlijk vanuit dat hij een rechtermuisklik vanuit explorer deed via een contextmenu. Is me nu niet helemaal duidelijk wat de TS bedoeld.

[ Voor 27% gewijzigd door CodeIT op 03-08-2007 21:38 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:39
Het is wellicht handiger als je je eerst afvraagt hoe je eerst de gewenste map kunt selecteren / kiezen / bepalen.

Er bestaat een class 'FolderOpenDialog'. Dit is een form die je toelaat om een directory te selecteren.
Die class heeft dan weer een member 'SelectedFolder' oid.

Of, is dit iets wat je wilt doen vanuit 'Windows Explorer' bv, want dit is nu niet heel duidelijk

[ Voor 42% gewijzigd door whoami op 03-08-2007 21:37 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja hoor, ik klik via het explorer menu met de rechtermuisknop op een map en selecteer daar het commande wat mijn programma zal openen.
Het probleem is dat ik niet weet welke map ik gekozen heb, ik weet wel de bovenliggende map, maar de map zelf niet.

En of die via de shell lukt weet ik niet.

Als iemand een ideetje heeft, zou hij dat zo vriendelijk willen zijn om de code te posten hoe ik het juist zou kunnen doen?

Dank bij voorbaat.

[ Voor 74% gewijzigd door Verwijderd op 03-08-2007 21:42 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 03 augustus 2007 @ 21:40:
Dit weet ik niet zeker, maar zou je hiervan een uitgewerkt voorbeeldje kunnen schrijven?
Verwijderd schreef op vrijdag 03 augustus 2007 @ 21:40:
Als iemand een ideetje heeft, zou hij dat zo vriendelijk willen zijn om de code te posten hoe ik het juist zou kunnen doen?

Dank bij voorbaat.
Nee. We zijn geen afhaalbalie voor kant-en-klare code. Doe eens een poging en laat ons dan weten waar je gestrand bent; daar kunnen we je wél mee helpen.

Hint: je krijgt de geselecteerde map(pen) en fil(es) als argument binnen.

[ Voor 41% gewijzigd door RobIII op 03-08-2007 21:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Idd, die krijg ik binnen, ik zal wel even zoeken, maar ik weet echt niet in welke richting, lol.

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 27-01 12:20

CodeIT

Code IT

Verwijderd schreef op vrijdag 03 augustus 2007 @ 21:48:
Idd, die krijg ik binnen, ik zal wel even zoeken, maar ik weet echt niet in welke richting, lol.
Kuch: My.Application.CommandLineArgs

Wat zijn de waardes in het register die je hebt toegevoegd om jouw programma toe te voegen aan het context menu. In het commando wat naar je programma linkt moet een %1 staan, anders geeft explorer de geselecteerde map niet door.

Meer info hier (vooral in de comments): http://www.codeproject.co...elect=2133730#xx2133730xx

[ Voor 42% gewijzigd door CodeIT op 03-08-2007 22:02 ]


Verwijderd

Topicstarter
Deze waarde wordt weggeschreven in HKEY_CLASSES_ROOT\Directory\Shell\Beveiligen\Command
De sleutel default is hier: F:\Projecten\Mapbeveiliging\Mapbeveiliging.exe /s

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 27-01 12:20

CodeIT

Code IT

Als je achter de sleutel dan "%1" (dus tussen de quotes) zet, kun je via My.Application.CommandLineArgs kijken wat er is geselecteerd.
Verplicht leesvoer: http://msdn.microsoft.com...ics_extending/context.asp
@PaulZ: Heb vandaag chinees op :)

[ Voor 44% gewijzigd door CodeIT op 03-08-2007 22:10 ]


  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
* Zijn we toch weer een beetje afhaalbalie geworden :P *

@CodeIT: Sambalbij?? :)

[ Voor 23% gewijzigd door PaulZ op 03-08-2007 22:13 . Reden: Sambal? ]

Vlinders moet je volgen, niet vangen...


Verwijderd

Topicstarter
Ik heb eindelijk de oplossing gevonden.
Dit is de code die ik gebruik.

Public Sub Main()
Application.EnableVisualStyles()
Dim frmCP As New frmCP
Dim frmLock As New frmLock
For Each strParameter As String In My.Application.CommandLineArgs
Dim strParameterNaam As String
Dim intPositie As Integer = strParameter.IndexOf("=")
If intPositie < 0 Then
strParameterNaam = strParameter
Else
strParameterNaam = strParameter.Substring(0, intPositie)
End If
If strParameterNaam = "/s" Or strParameterNaam = "/u" Or strParameterNaam = "/n" Then
If strParameterNaam = "/s" Then
Application.Run(frmLock)
End If
If strParameterNaam = "/n" Then
Application.Run(frmCP)
End If
Else
strMap = strParameterNaam
End If
Next strParameter
End Sub

Wat denken jullie ervan, goede code of bestaat er een andere manier?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code post, gebruik dan code tags ;)
Verwijderd schreef op vrijdag 03 augustus 2007 @ 22:50:
Wat denken jullie ervan, goede code of bestaat er een andere manier?
Ik zie niet wat die code doet met eventuele file/foldernamen die doorgegeven worden?
En daarnaast: er is geen "dé" manier van code; code schrijf je met een bepaald doel en dat kun je op 1001 manieren bereiken (vele wegen leiden naar Rome).

[ Voor 67% gewijzigd door RobIII op 04-08-2007 02:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1