Zoals het onderwerp zegt: hoe start windows een programma als je er een file op sleept?
Zoals ik in een ander topic zei heb ik eens een client-side programmatje proberen maken om een bepaald zelfgeschreven bestand te kunnen openen.
Commandline werkt het programma:
test.exe -> is prima
test.exe file.txt -> is prima
In een windows-omgeving:
text.exe dubbelklikken -> is prima
file.txt op test.exe slepen -> gebeurt niks. Even een dos-venster, maar voor de rest niks.
Wat is er zo anders in die laatste situatie? (want da's net wat ik moet hebben )
Hoe start Windows een programma als je er een file op sleept
-
- Elite Poster
- Berichten: 1158
- Lid geworden op: 03 maa 2004, 09:04
- Uitgedeelde bedankjes: 18 keer
- Bedankt: 16 keer
Meon, is dit in .NET?
Hier een voorbeeldje in C#...
Heel kort:
- Zet de AllowDrop property van je form op True
- In het DragEnter event check je via GetDataPresent of de data van het verwachte formaat is
- Indien ok, dan zet je e.Effect
- In het OnDragDrap event kan je via e.Data de effectieve data ophalen (in dit geval een path naar een file).
Hier een voorbeeldje in C#...
Heel kort:
- Zet de AllowDrop property van je form op True
- In het DragEnter event check je via GetDataPresent of de data van het verwachte formaat is
- Indien ok, dan zet je e.Effect
- In het OnDragDrap event kan je via e.Data de effectieve data ophalen (in dit geval een path naar een file).
-
- Elite Poster
- Berichten: 3310
- Lid geworden op: 26 jul 2005, 12:17
- Locatie: Lochristi
- Uitgedeelde bedankjes: 196 keer
- Bedankt: 125 keer
Ik denk dat Meon automatisch test.exe wil starten als je er een file opsleept.
Als dit zo is dan doe je dat door file associatie (sorry voor de vertaling).
1) maak een bestand met een eigen extensie, bvb example.meon
2) in explorer open je het bestand met Open en selecteer je het programma waarmee je example.meon wil openen (bvb. test.exe)
3) vanaf nu is er een associatie (koppeling tussen de extensie .meon en test.exe)
Als dit zo is dan doe je dat door file associatie (sorry voor de vertaling).
1) maak een bestand met een eigen extensie, bvb example.meon
2) in explorer open je het bestand met Open en selecteer je het programma waarmee je example.meon wil openen (bvb. test.exe)
3) vanaf nu is er een associatie (koppeling tussen de extensie .meon en test.exe)
- Bijlagen
-
- meon_filedrag.JPG
- (39.18 KiB) 92 keer gedownload
-
- Administrator
- Berichten: 4143
- Lid geworden op: 15 sep 2002, 09:08
- Locatie: Belgium, Haacht
- Contacteer:
- meon
- Administrator
- Berichten: 16609
- Lid geworden op: 18 feb 2003, 22:02
- Twitter: meon
- Locatie: Bree
- Uitgedeelde bedankjes: 564 keer
- Bedankt: 759 keer
- Contacteer:
Mja, ik heb associaties en al geprobeerd ...
En nee, dat doet ie dus niet eh. Als ik een file er op sleep krijg ik géén file in m'n %temp%. Ik weet niet meer wat het kan zijn
't is geen .net maar PHP.
En nee, dat doet ie dus niet eh. Als ik een file er op sleep krijg ik géén file in m'n %temp%. Ik weet niet meer wat het kan zijn
't is geen .net maar PHP.
-
- Elite Poster
- Berichten: 3310
- Lid geworden op: 26 jul 2005, 12:17
- Locatie: Lochristi
- Uitgedeelde bedankjes: 196 keer
- Bedankt: 125 keer
Meon, voor alle duidelijkheid:
Als je het bestand sleept wordt dan het programma meon.exe automatisch gestart?
Ik heb zelf een voorbeeldje ingesloten dat volgens mij doet wat je verwacht. Laat maar weten...
Als je het bestand sleept wordt dan het programma meon.exe automatisch gestart?
Ik heb zelf een voorbeeldje ingesloten dat volgens mij doet wat je verwacht. Laat maar weten...
- Bijlagen
-
- Meon.zip
- (204 KiB) 106 keer gedownload
- meon
- Administrator
- Berichten: 16609
- Lid geworden op: 18 feb 2003, 22:02
- Twitter: meon
- Locatie: Bree
- Uitgedeelde bedankjes: 564 keer
- Bedankt: 759 keer
- Contacteer:
Ewel, in uw geval doet ie het.
Ik ben ondertussen weer klein beetje verder, heb een andere compiler gebruikt, maar 't gaat nog niet goed, vage error op scherm.
Dit is de bron:Eender wat ge er op sleept of achter typt zou ie in die txt in uw %TEMP% moeten zetten.
Dat ziet er dan bvb zo uit:
Expres een pad met spaties genomen, maar dat gaat dus NIET fout als ge het tussen aanhalingstekens zet. Maar als ge er een file op sleept dus wél.
Ik ben ondertussen weer klein beetje verder, heb een andere compiler gebruikt, maar 't gaat nog niet goed, vage error op scherm.
Dit is de bron:
Code: Selecteer alles
<?php
$filename = "\\test-".date("d-m-y-h-i-s").".txt";
$foutput = fopen($_ENV['TEMP'].$filename,"w");
fwrite($foutput,print_r($argv,1));
fclose($foutput);
echo "file created in your %TEMP%";
sleep(5);
exit(0);
?>
Dat ziet er dan bvb zo uit:
Code: Selecteer alles
Array
(
[0] => test.exe
[1] => C:\Program Files\Common Files\Microsoft Shared\Source Engine\OSE.EXE
)
Expres een pad met spaties genomen, maar dat gaat dus NIET fout als ge het tussen aanhalingstekens zet. Maar als ge er een file op sleept dus wél.
- Bijlagen
-
- test.zip
- (605.55 KiB) 106 keer gedownload
-
- Elite Poster
- Berichten: 3310
- Lid geworden op: 26 jul 2005, 12:17
- Locatie: Lochristi
- Uitgedeelde bedankjes: 196 keer
- Bedankt: 125 keer
Mijn php kennis is zeer beperkt maar kan je dit niet oplossen door alle argumenten op de commandline aan elkaar te knopen (string1+string2+string3....).
Als alles goed gaat (heb het zelf niet kunnen testen want ik ben op vakantie ) dan zouden alle "delen" van de volledige filename/file path nu wel getoond moeten worden.
Code: Selecteer alles
<?php
$filename = "\\test-".date("d-m-y-h-i-s").".txt";
$foutput = fopen($_ENV['TEMP'].$filename,"w");
for ($counter="1"; $counter < $argc; $counter++)
{
fwrite($foutput,print_r(each($argv)));
}
fclose($foutput);
echo "file created in your %TEMP%";
sleep(5);
exit(0);
?>
Als alles goed gaat (heb het zelf niet kunnen testen want ik ben op vakantie ) dan zouden alle "delen" van de volledige filename/file path nu wel getoond moeten worden.
- meon
- Administrator
- Berichten: 16609
- Lid geworden op: 18 feb 2003, 22:02
- Twitter: meon
- Locatie: Bree
- Uitgedeelde bedankjes: 564 keer
- Bedankt: 759 keer
- Contacteer:
Euh
En in de test-file in %TEMP% staat
Volgens mij ben ik nu nog verder van huis weg
$argv is een array met alle parameters. print_r() dient om een array leesbaar te maken, dus die moet niet nog eens speciaal gelooped worden.
Ik doe $print_r($array,1) -> dan heeft ie een returnwaarde ipv rechtstreeks te outputten.
Code: Selecteer alles
C:\Temp>php test.php blaat blaat blaat
Array
(
[1] => test.php
[value] => test.php
[0] => 0
[key] => 0
)
Array
(
[1] => blaat
[value] => blaat
[0] => 1
[key] => 1
)
Array
(
[1] => blaat
[value] => blaat
[0] => 2
[key] => 2
)
file created in your %TEMP%
Code: Selecteer alles
111
Volgens mij ben ik nu nog verder van huis weg
$argv is een array met alle parameters. print_r() dient om een array leesbaar te maken, dus die moet niet nog eens speciaal gelooped worden.
Ik doe $print_r($array,1) -> dan heeft ie een returnwaarde ipv rechtstreeks te outputten.