Java + Windows probleem

Pagina: 1
Acties:

  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Topicstarter
Sorry voor de onduidelijke topic titel maar het is moeilijk te omschrijven.

Ik wil een JAVA applicatie maken die rechtstreeks aan te sturen is vanuit het context menu. (een programma om rechtstreeks bestanden te uploaden naar me ftp)

Ik heb onderzocht hoe dit moet, ik heb een registery key aangemaakt:

code:
1
HKEY_CLASSES_ROOT\*\shell\UploadFTP\command\


met daarin een waarde voor (default)

code:
1
java -cp "C:\\java\\clickandup" ftptest %1


nu komt ie keurig in me context menu te staan als ik rechtermuisknop doe op een bestand op bv me desktop.

Als ik nu in die ftp test het stuk code zet:

code:
1
System.out.println(arg[0]);


dan word dus de locatie van het bestand waarvanuit ik het heb aangeroepen redelijk "netjes" geprint en dat ziet er zo uit: (het bestand heet testtesttesttesttest)

code:
1
C:\DOCUME~1\username\Desktop\TESTTE~1


MAAR dat wil ik niet zo, ik wil gewoon dat hij het volledige pad meegeeft want zo kan in niet meer de bestandnaam achterhalen van bestanden langer dan 8 tekens!!

maar dat is nogal ommogelijk. De enige manier na VEEL proberen is met een tussen bat file, de regkey werd dan dit:

code:
1
java -cp "C:\\java\\clickandup\\ftpup.bat %1


en dan in die bat file:

code:
1
java -cp "C:\java\clickandup" ftptest %1


en dan werkt het wel 100% goed!!!!!!!!

raar toch, de argumenten worden nu ineens wel goed doorgegeven

maarja, ik wil die lelijke dos box van die bat file kwijt, zowieso dus met javaw werken maar door die bat file heeft dat geen zin

wat ik ook nog geprobeert heb is dit:

code:
1
java -cp "C:\\java\\clickandup" -Djavatest=%1 ftptest


maar System.getProperty("javatest") geeft dan gewoon de gecorrigeerde 8 tekens versie...

ik heb het ook geprobeert met "%1", maar dat maakt niks uit.

ik heb ook geprobeert in me registery dit te zetten:

code:
1
java -cp "C:\\java\\clickandup" ftptest "C:\program files\dit en dat\"


en dan printe hij ook gewoon het volledige path :S

dus op welk punt het verkeerd gaat weet ik niet

ik weet niet of nu windows, of java hem verranderd, maar ik word er wel saggerijnig van, hoe los ik dit op zodat hij wel het volledige path meekrijgt?

[ Voor 13% gewijzigd door KnEuTeR op 13-01-2005 01:05 ]

Computers ain't that smart, Whatever man built could be taken apart


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Ik weet niet maar ik doe een wilde gok kan het volgende werken:

java -cp "C:\\java\\clickandup" ftptest "%1"

Ik weet niet of Windows dan ook meteen de neiging heeft om dan het volledige pad mee te geven.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Probeer eens ipv %1 neer te zetten %~f1

  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Topicstarter
ronaldmathies schreef op donderdag 13 januari 2005 @ 13:12:
Ik weet niet maar ik doe een wilde gok kan het volgende werken:

java -cp "C:\\java\\clickandup" ftptest "%1"

Ik weet niet of Windows dan ook meteen de neiging heeft om dan het volledige pad mee te geven.
dat heb ik al geprobeerd staat ook al in me post, maar dat maakt geen verschil
Verwijderd schreef op donderdag 13 januari 2005 @ 13:18:
Probeer eens ipv %1 neer te zetten %~f1
dan print me programma gewoon dat: %~f1

hoe kom je daar eigenlijk bij?

hoe heet dit soort taal, is het deel van MSDOS bat?

Computers ain't that smart, Whatever man built could be taken apart


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 15-05 20:41

ThunderNet

Flits!

msdos bat is gewoon een verzameling van commando's die je achterelkaar uitgevoerd wilt hebben.

dit zijn dus losse commando's daarvan. ? misch ideetje om oude pc op te duidelijken en daar msdos 6.2 op te zetten als je er meer over wilt leren.
ThunderNet gebruikt cmd.exe regelmatig nog :D

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


Verwijderd

KnEuTeR schreef op donderdag 13 januari 2005 @ 13:58:
[...]


dat heb ik al geprobeerd staat ook al in me post, maar dat maakt geen verschil


[...]


dan print me programma gewoon dat: %~f1

hoe kom je daar eigenlijk bij?

hoe heet dit soort taal, is het deel van MSDOS bat?
http://www.ss64.com/ntsyntax/parameters.html


Wat gebeurt er als je %* gebruikt?


Anders probeer eens:

Turning off 8.3 file name generation:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Change the NtfsDisable8dot3NameCreation value to 1

[ Voor 23% gewijzigd door Verwijderd op 13-01-2005 17:21 ]


  • nxt
  • Registratie: November 2001
  • Laatst online: 04-02 09:36

nxt

wat je ook nog kunt proberen is in je applicatie er eerst een File object van te maken.
iets als:
code:
1
2
File tmp = new File(arg[0]);
System.out.println(tmp.getAbsolutePath());

misschien dat dat wel 't volledige path op levert

  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Topicstarter
Verwijderd schreef op donderdag 13 januari 2005 @ 16:55:
Turning off 8.3 file name generation:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Change the NtfsDisable8dot3NameCreation value to 1
nope, helpt niks helaas, ook niet na reboot
nxt schreef op donderdag 13 januari 2005 @ 18:25:
wat je ook nog kunt proberen is in je applicatie er eerst een File object van te maken.
iets als:
code:
1
2
File tmp = new File(arg[0]);
System.out.println(tmp.getAbsolutePath());

misschien dat dat wel 't volledige path op levert
nope werkt ook niet, had ik al geprobrobeert

als ik nou eens wist wie ze schuld het was dat het gebeurd, dan kan ik ook beter zoeken, maar het is allemaal echt onduidelijk

Computers ain't that smart, Whatever man built could be taken apart


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
"%1" heeft niets met CMD.EXE te maken. Wat er gebeurt is dat Explorer.exe een ShellExecute doet van jouw programma, en daarbij een aantal parameters meegeeft. De %1 geeft aan op welke positie in de parameter lijst de naam van het shell object moet worden meegegeven. Die naam is dus de 8.3 filenaam voor een file object.

De naam is uniek, en met GetLongPathName krijg je de gezochte naam.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1