Springen naar inhoud

Subdirectories zoeken


  • Log in om te kunnen reageren

#1

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 26 augustus 2008 - 21:45

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?)
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 26 augustus 2008 - 22:27

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?

Veranderd door ZVdP, 26 augustus 2008 - 22:29

"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#3

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 27 augustus 2008 - 18:37

PC003 lijkt mij de PC naam te zijn. Voor de andere vragen kan ik je niet direct helpen.

#4

Schwartz

    Schwartz


  • >250 berichten
  • 691 berichten
  • Verbannen

Geplaatst op 27 augustus 2008 - 22:32

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.

Veranderd door Schwartz, 27 augustus 2008 - 22:34

Een computertaal is voor mensen, niet voor de computer.

#5

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 27 augustus 2008 - 23:20

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?
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#6

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 28 augustus 2008 - 20:52

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.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures