Autor | Zpráva | ||
---|---|---|---|
zetrozet Profil * |
#1 · Zasláno: 29. 8. 2011, 16:35:31
Jedná se mi o použití na lokálním počítači.
Spustit *.EXE javascriptem není problém, ale nevím jak onomu *.EXE předat parametry zadané uživatelem do formuláře. Přitom by mi bylo jedno, jestli by ten *.EXE měl číst parametry z příkazové řádky nebo ze souboru. |
||
Marek88 Profil |
#2 · Zasláno: 29. 8. 2011, 22:37:51
Kde je problém? V tom, že nevíte, jak předat programu parametry nebo jak ty parametry vytáhnout z formuláře? Jestli chcete radu (ať už ode mě nebo od někoho jiného), doporučuji vám sem vložit kód, který máte hotový - formulář + spuštění programu.
|
||
zetrozet Profil * |
#3 · Zasláno: 29. 8. 2011, 23:51:13
Nevím, jak parametry předat programu.
function poslat(adr99) { kde=adr99; // zde = document.location.toString(); // zde = zde.substring(0,zde.lastIndexOf("/")+1); konc0=document.zobradr["konc"].value; soub0=document.zobradr["nazsoub"].value; adresa0=document.zobradr["adresa"].value; while (konc0.indexOf(" ")>0) konc0=konc0.replace(" ",""); while (soub0.indexOf(" ")>0) soub0=soub0.replace(" ",""); while (adresa0.indexOf(" ")>0) adresa0=adresa0.replace(" ",""); if (konc0!="" && soub0!="") { alert("Název souboru nebo koncovka souboru musí zůstat prázdný\nOpravte"); return false; } if (konc0=="" && soub0=="") { alert("Název souboru nebo koncovka souboru musí být vyplněn.\nOpravte"); return false; } if (adresa0=="") { alert("Adresář (složka) kde má prohledávání začít, musí být vypněn vždy.\nOpravte"); return false; } if (konc0!="") vystup=' /F *.'+konc0; else vystup=' /F '+soub0; vystup=vystup+' /D \"'+adresa0+'\" /S '+kde+'obrazky_v.js /e '+kde+'obrazky_v.HTM /P nalezeno'; // vystup='hledani.exe '+vystup; // document.zobradr.vystup=encodeURI(vystup); alert('Vystup: '+vystup); return window.open("hledani.exe ","",vystup); // return window.open(vystup,""); } |
||
Witiko Profil |
#4 · Zasláno: 30. 8. 2011, 02:56:10
Deklarace proměnných jsou viditelně pouze pro zelenáče, pravý zálesák to zvládne i bez nich, no nemám já pravdu? Tohle by mělo fungovat:
window.open("hledani.exe " + vystup); |
||
zetrozet Profil * |
#5 · Zasláno: 30. 8. 2011, 08:35:08
Možná by to fungovat mělo, ale nefunguje - v tomto případě je hledán a nenalezen soubor "hledani.exe%20/..." atakdál. Prostě v tomto případě není mezera a "%20" považována za stejný znak.
|
||
Witiko Profil |
#6 · Zasláno: 30. 8. 2011, 12:43:22
zetrozet:
Bude to tipuju pevně daným formátem URI schématu. Prohlížeč není příkazová řádka windows. |
||
zetrozet Profil * |
#7 · Zasláno: 30. 8. 2011, 13:43:18
Proto se ptám zkušenějších, jak parametry předat *.EXE. U způsobů, které nefungují, mne nezajímá, proč nefungují.
|
||
Mike8748 Profil |
#8 · Zasláno: 30. 8. 2011, 13:57:13
zetrozet:
a co tě dovedlo k názoru že to takto vůbec lze? (neřeknu být to v IE a používat VB, ale javascriptem spouštět program s parametry?) |
||
Chamurappi Profil |
#9 · Zasláno: 30. 8. 2011, 14:05:49
Reaguji na zetrozeta:
„U způsobů, které nefungují, mne nezajímá, proč nefungují.“ Ale z vysvětlení jde odvodit, že žádné jiné nejsou. „Spustit *.EXE javascriptem není problém“ Není problém přesvědčit prohlížeč, aby se zeptal uživatele, co chce se souborem udělat — uživatel si může vybrat, že ho chce spustit (jen tak, bez parametrů), nebo uložit (pak se parametry pochopitelně také neukládají). Reaguji na Mika8748: „neřeknu být to v IE a používat VB“ Skriptovací jazyky mají v Exploreru ekvivalentní možnosti. Prakticky vše, co umí VBScript, umí i JavaScript. |
||
Mike8748 Profil |
#10 · Zasláno: 30. 8. 2011, 14:25:48
Chamurappi:
javascript mě nechá vytvořit new ActiveXObject("wscript.shell") ? sem netušil (pravda, nebyla potřeba to zjišťovat) |
||
zetrozet Profil * |
#11 · Zasláno: 30. 8. 2011, 14:27:31
Ale v dotazu jsem se ptal, jestli lze předat parametry buď zapsáním do nějakého souboru nebo příkazovou řádkou, případně jinak. O tom, že by mělo jít výhradně o předání příkazovou řádkou, řeč nebyla.
Jde mi o fungování na lokálním počítači bez instalace Apache nebo jiných podobných aplikací. |
||
Chamurappi Profil |
#12 · Zasláno: 30. 8. 2011, 14:54:51
Reaguji na Mike8748:
Na webové stránce nenechá, pokud WScript.Shell není v registru poznačený jako bezpečný pro skriptování. Přesně totéž platí pro VBScript.
Reaguji na zetrozeta: „buď zapsáním do nějakého souboru nebo příkazovou řádkou, případně jinak“ Webová stránka má v tomto směru hodně omezené možnosti. Zapsat do souboru nemůžeš, příkazovou řádku nevyvoláš. Možná bys mohl zapsat cookie a tu pak tím EXE programem odněkud pracně vylovit. Můžeš měnit ten EXE? Máš jeho zdroják? Pomohlo by upřesnění, o co se vlastně snažíš a co tě přivedlo k této slepé uličce. |
||
zetrozet Profil * |
#13 · Zasláno: 30. 8. 2011, 16:06:53
Zdroják *.EXE mám a upravovat ho jakžtakž umím.
Původ problému - když žena počítala zájemcům důchodovou kalkulačku, uložila si *.XLS z každého výpočtu extra a já jí to musel ručně zpřístupnit = šlo sice jen o řádek v javascriptovém souboru - základ je na www.zetrozet.com v prográmku "Domovská stránka". Když mě to přestalo bavit, tak jsem udělal *.EXE jako obecný vyhledávač, který spouštím *.BAT s natvrdo nastavenými parametry. Vyhledávač podle parametrů vyhledá v zadaném adresáři a podadresářích všechny soubory splňující zadanou masku vtvoří buď *.TXT nebo *.JS a případně i spustí vybraný *.HTM, kterým zobrazí seznam vyhledaných souborů (o obrázků s náhledem) a uživateli umožní odkazem jednotlivý soubor otevřít/spustit. Teď jsem chtěl ony natvrdo napsané *.BATy nahradit variabilnějším systémem. |
||
zetrozet Profil * |
#14 · Zasláno: 30. 8. 2011, 17:39:28
Protože nelze k příspěvkům připojit soubory, jsou soubory ke stažení na www.zetrozet.biz/index.php?load=jakpsatweb . Je tam HLEDANI.EXE, zobrazovací OBRAZKY_V.HTM i vzorová data v OBRAZKY_V.JS. Požadované parametry pro HLEDANI.EXE jsou v jeho helpu, je-li *.EXE spuštěn bez parametrů. Posílat obrázky pro záhlaví *.HTM mi připadá pro řešení problému zbytečné.
|
||
Witiko Profil |
#15 · Zasláno: 30. 8. 2011, 17:40:54 · Upravil/a: Witiko
Tak si javascriptem vygeneruj ty baty, poté je ručně překopíruj a spusť.
|
||
Chamurappi Profil |
#16 · Zasláno: 30. 8. 2011, 18:10:01
Reaguji na zetrozeta:
Jestli tomu dobře rozumím, tak tu hypertextovou část svého díla sestavuješ jen proto, abys nemusel vymýšlet jiný způsob komunikace s uživatelem (programovat si vlastní formuláře). Zkus si vyhledat něco o „HTML Application“ (HTA). Kdysi s tím přišel Microsoft, je to lokálně spouštěná HTML stránka v holém jádru Internet Exploreru s rozšířenými právy. Skripty v ní tuším mohou libovolně pracovat se soubory (třeba je i přímo spouštět) pomocí ActiveX komponent, s nimiž není dovoleno pracovat v prostředí webu, jako je např. FileSystemObject , možná i ten WScript.Shell .
|
||
_es Profil |
#17 · Zasláno: 30. 8. 2011, 18:16:41
zetrozet:
Ešte sa dá okrem Chamurappiho riešenia použiť aj spustenie JS intrepretu v prostredí OS, teda vytvorenie priamo spustiteľného .js súboru, v ktorom bude kód spúšťajúci to jadro IE a ovládajúci ho. |
||
zetrozet Profil * |
#18 · Zasláno: 30. 8. 2011, 18:29:55
Reaguji na Chamurappiho:
Uživatel, který neumí programovat, zadá požadavek do formuláře v HTML, ale ten skript mám právě díky nefunkčnímu předávání parametrů jen v "domácím" exempláři (ve fungujícím InnerTextu), obrázky píchnu za chvíli na výše uvedenou stránku. Reaguji na Witika: Kdybych to měl jen pro sebe, je prašť jako uhoď jestli zapíšu pár písmenek do příkazové řádky nebo stvořím generátor baťáků. Ale pro normálního uživatele je ono navrhované "překopírování a spuštění" nepřijatelné, protože je to něco víc, než kliknutí na zástupce na ploše nebo na volbu v prohlížeči. |
||
_es Profil |
#19 · Zasláno: 30. 8. 2011, 18:37:13
zetrozet:
„Ale pro normálního uživatele je ono navrhované "překopírování a spuštění" nepřijatelné“ Podľa môjho návrhu by tomu užívateľovi stačilo kliknúť na .js súbor na ploche. |
||
Chamurappi Profil |
#20 · Zasláno: 30. 8. 2011, 18:45:10
Reaguji na zetrozeta:
… a podle mého návrhu by mu stačilo kliknout na .hta soubor na ploše.
Jestli se dá spolehnout na přítomnost .NET Frameworku v počítači uživatele (tuším, že verze 2.0 byla v nějakém service packu WinXP), nebylo by těžké napsat baťák, který u uživatele sám vytvoří celou okenní EXE aplikaci. |
||
zetrozet Profil * |
#21 · Zasláno: 30. 8. 2011, 19:13:35
Reaguji na _es:
Vysvětli aspoň mě, který to zatím nikdy nepotřeboval, jak (asi nainstalovat a) spustit JS interpret v prostředí OS. Pak spolu zkonzultujeme je-li to tlumočitelné uživatelům, aby si to udělali ve svých počítačích sami. Reaguji na Chamurappiho: Na .NET Framework se asi spolehnout dá. Na druhou stranu mám dost možná uživatele, kteří ještě neopustili Win 95/98, ale těmi bych se netrápil. Proč psát baťák vytvářející celou EXE aplikaci nechápu, když mi stačí do baťáku dostat uživatelem aktuálně vymyšlené parametry = adresář, ve kterém se mají hledat soubory dle zadané masky nebo koncovky a pak ten baťák spustit. To následné počínaje spuštěním baťáku už mi funguje, a podle helpu v HLEDANI.EXE si to můžete vyzkoušet - na [url=www.zetrozet.biz/index.php?load=jakpsatweb]www.zetrozet.biz/index.php?load=jakpsatweb[/url] si můžete soubory stáhnout a vyzkoušet včetně vytvoření datového *.js. *.HTM je natolik jednoduchý, že nikomu z Vás by úprava názvu proměnné a názvy *.js neměla činit problémy. Vzorový baťák přikládám: F:\doma\hledani.EXE /D "X:\LADA_FOTO\08 07-08" /F *.jpg /S F:\doma\obrazky_v.js /e F:\doma\obrazky_v.htm /P nalezeno |
||
_es Profil |
#22 · Zasláno: 30. 8. 2011, 19:54:31
zetrozet:
„Vysvětli aspoň mě, který to zatím nikdy nepotřeboval, jak (asi nainstalovat a) spustit JS interpret v prostředí OS.“ Tak isto, ako spustíš .exe súbor, len spustíš .js súbor, vo Windows ten JS interpret už je. |
||
zetrozet Profil * |
#23 · Zasláno: 30. 8. 2011, 19:59:24
A jaká je jeho struktura, případně jak ho na té ploše vytvořím. Zatím jsem se s koncovkou .js setkal pouze u souborů JavaScriptu.
|
||
zetrozet Profil * |
#24 · Zasláno: 30. 8. 2011, 20:03:49
Chamurappi:
„… a podle mého návrhu by mu stačilo kliknout na .hta soubor na ploše.“ Vyzkouším, v téhle chvíli a s mými znalostmi je to asi nejschůdnější cesta zkusit to nejnutnější pro .HTA nastudovat. |
||
_es Profil |
#25 · Zasláno: 30. 8. 2011, 20:16:39
zetrozet:
„Zatím jsem se s koncovkou .js setkal pouze u souborů JavaScriptu.“ No veď ide o JavaScript, teda presnejšie o JScript, len nebeží v prostredí prehliadača, ale využíva knižnice OS. Napríklad tu máš nejaký príklad z dokumentácie. „jak ho na té ploše vytvořím.“ V hocijakom textovom editore vytvoríš súbor s koncovkou .js. |
||
zetrozet Profil * |
#26 · Zasláno: 30. 8. 2011, 21:07:37
Pánové děkuji za spolupráci, už to funguje k mé spokojenosti. V podstatě jsem použil obojí - z HTM udělal HTA a do výše uvedeného sktiptu doplnil čtyři řádky pro FileSystemObject. Nový tvar přikládám:
function poslat(adr99) { var fso = new ActiveXObject("Scripting.FileSystemObject"); kde=adr99; konc0=document.zobradr["konc"].value; soub0=document.zobradr["nazsoub"].value; adresa0=document.zobradr["adresa"].value; while (konc0.indexOf(" ")>0) konc0=konc0.replace(" ",""); while (soub0.indexOf(" ")>0) soub0=soub0.replace(" ",""); while (adresa0.indexOf(" ")>0) adresa0=adresa0.replace(" ",""); while (adresa0.lastIndexOf("/")==adresa0.length-1) adresa0=adresa0.substr(0,adresa0.length-1); if (konc0!="" && soub0!="") { alert("Název souboru nebo koncovka souboru musí zùstat prázdný\nOpravte"); return false; } if (konc0=="" && soub0=="") { alert("Název souboru nebo koncovka souboru musí být vyplnìn.\nOpravte"); return false; } if (adresa0=="") { alert("Adresáø (složka) kde má prohledávání zaèít, musí být vypnìn vždy.\nOpravte"); return false; } if (konc0!="") vystup=' /F *.'+konc0; else vystup=' /F '+soub0; vystup=vystup+' /D \"'+adresa0+'\" /S '+kde+'obrazky_v.js /e '+kde+'obrazky_v.HTM /P nalezeno'; vystup=kde+'hledani.exe '+vystup; var soubor = fso.CreateTextFile("hledani.bat", true); soubor.WriteLine(vystup); soubor.Close(); return window.open("hledani.bat"); } |
||
_es Profil |
#27 · Zasláno: 30. 8. 2011, 21:29:21
zetrozet:
Len ešte drobný nedostatok: Používejte var |
||
Časová prodleva: 13 let
|
0