1 van 1

Subdirectories zoeken

Geplaatst: di 26 aug 2008, 22:45
door ZVdP
Ik ben een klein programmaatje (spelletje) aan het schrijven en ik ben van plan om het mogelijk te maken om het via een netwerk te spelen tegen elkaar.

Nu, daarvoor zou ik willen weten vanuit welke folder (die gedeeld is over het netwerk) de tegenstander zijn .exe runt.

Ik zou dit simpelweg aan de speler kunnen vragen, alhoewel dat natuurlijk niet zo gebruiksvriendelijk is.

Ik heb al een procedure gevonden die files kan opzoeken:

FindFirstFile

Bijvoorbeeld:

Ik heb een file genaamd Test.exe in C:\

Als ik de functie oproep: FindFirstFile('C:\*.Exe',WIN32_FIND_DATA);

Krijg ik mooi 'Test.exe' terug.

Ik zou dit ook graag kunnen doen voor subfolders (waarvan ik de naam op voorhand niet ken). Dit is me tot nu toe niet gelukt met FindFirstFile. (Alhoewel vorige site wel vermeld dat je ook subfolders hiermee kan vinden)

Bijvoorbeeld in mijn geval zit de file hier: \\PC003\SharedDocs\Test.exe

Hoe kan ik hieraan geraken wanneer ik enkel het volgende weet: \\PC003\ ?

Dus ik zou graag de subfolders van, in dit geval, \\PC003\ weten.

Dan hoef ik enkel aan de speler te vragen hoe de computer van de tegenstander heet. (Of kan ik dat ook ergens opzoeken welke computers allemaal verbonden zijn?)

Re: Subdirectories zoeken

Geplaatst: di 26 aug 2008, 23:27
door ZVdP
Ik heb ondertussen al ontdekt hoe ik subfolders moet opvragen, maar dit lukt me enkel op mijn eigen computer:

FindFirstFile('C:\*') geeft mooi alle files en folders onder C:\

Maar als ik dit probeer: ('\\PC003\*') dan krijg ik niets ( invalid handle via GetLastError)

Het straffe is: (\\PC003\SharedDocs\*') werkt wel!

Dus van een subfolder van PC003 kan ik wel alles opvragen, maar van PC003 zelf niet?

Of heet die folder standaard ALTIJD zo? Kan die een andere naam hebben?

Re: Subdirectories zoeken

Geplaatst: wo 27 aug 2008, 19:37
door Cycloon
PC003 lijkt mij de PC naam te zijn. Voor de andere vragen kan ik je niet direct helpen.

Re: Subdirectories zoeken

Geplaatst: wo 27 aug 2008, 23:32
door Schwartz
Volgens mij kan men met een commando de exe file opvragen waar het gestarte programma staat.

Bij pascal is dat:

PROGRAM_FOLDER:=EXTRACTFILEPATH(APPLICATION.EXENAME);

in C++ zal dat ook wel ergens bij APPLICATION ofzo staan lijkt me...

Het is dan direkt bekend en windows behoeft niet te gaan zoeken enzo.

En in het spel dan kan men dit gegeven overseinen.

Re: Subdirectories zoeken

Geplaatst: do 28 aug 2008, 00:20
door ZVdP
Probleem is dat ik met Modula2 werk, gelukkig is de Windows bibliotheek wel redelijk, maar ook weer niet om over naar huis te schrijven :P

En aangezien het niet zo'n veel gebruikte taal is, in vergeljking met C++ bijvoorbeeld, zijn er zo goed als geen openbare bibliotheken te vinden op het net.

En bovendien, ik zou niet meteen een functie weten die me terug geeft waar een applicatie gestart is, op een andere pc nota bene. Op dezelfde computer is het geen enkel probleem, dat gebruik ik al: GetCurrentDirectory.

Maar ik heb het ondertussen al opgelost in een 400 regeltjes. Niet de meest elegante, of snelste oplossing, maar ze werkt wel :D

De gebruiker moet enkel nog de naam van de pc van de tegenspeler ingeven.

Dat zou ik ook graag automatisch opzoeken, maar het is geen ramp.

Wat ik me wel afvraag: bij 'netwerk' onder windows verkenner staat onder een andere pc van het netwerk de map 'SharedDocs'. Hiervan is het onmogelijk de naam te veranderen.

Daarom vermoed ik dat dit een standaard folder is, die op elke pc staat aan een netwerk.

Maar heet deze zo ook op elke (windows) computer? Of zijn er enkele varianten, zoals 'GedeeldeDocumenten','SharedFiles' of zo, naargelang de versie van Windows?

Re: Subdirectories zoeken

Geplaatst: do 28 aug 2008, 21:52
door Cycloon
Er zal idd een verschil op zitten naargelang de taal van het OS.

Mss moet je even zoeken op 'path-variabelen'. Dit zijn zaken die windows zelf bijhoudt, zoals bv het pad naar de windows directory (die voor visual basic bv %WINDOWS% is dacht ik). Waarschijnlijk is voor die shareddocs ook wel zo'n path-variabele voorzien.