home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 May / PCWorld_2005-05_cd.bin / software / vyzkuste / zastupci / zastupci.exe / pcwhotkeys.hta < prev    next >
Text File  |  2005-03-13  |  10KB  |  231 lines

  1. <HTML><!--
  2. /*
  3.  
  4. Purpose:
  5. This JScript displays all user defined Windows
  6. hotkeys in LNK and URL files. It searches through the
  7. following directories:
  8. %USERPROFILE%\Desktop
  9. %ALLUSERSPROFILE%\AllUsersDesktop (2000, XP only)
  10. %USERPROFILE%\StartMenu
  11. %ALLUSERSPROFILE%\AllUsersStartMenu (2000, XP only)
  12. %USERPROFILE%\Favorites
  13.  
  14. Author:
  15. Copyright (C) 2003 David G. Wolski (admi@india.com)
  16.  
  17. License:     
  18. This program is free software; you can redistribute it and/or
  19. modify it under the terms of the GNU General Public License as
  20. published by the Free Software Foundation; either version 2 of
  21. the License, or (at your option) any later version.
  22. This program is distributed in the hope that it will be useful,
  23. but WITHOUT ANY WARRANTY; without even the implied warranty of
  24. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  25. General Public License for more details.
  26. http://www.gnu.org/copyleft/gpl.html
  27.  
  28. Requirements:
  29. Windows 98, ME, 2000, XP
  30. IE 5.0, 5.5, 6.0 
  31.  
  32. Voraussetzungen:
  33. Windows 98, ME, 2000, XP
  34. IE 5.0, 5.5, 6.0
  35. */-->
  36. <HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  37.  
  38. <TITLE>Skript PC WORLDu: DefinovanΘ klßvesovΘ zkratky</TITLE>
  39. <HTA:APPLICATION ID="pcwHotkeys" APPLICATIONNAME="pcwHotkeys" BORDER="normal" CAPTION = "Yes" SHOWINTASKBAR = "yes" SINGLEINSTANCE = "yes" SYSMENU = "yes" WINDOWSTATE = "normal" SCROLL = "yes" SCROLLFLAT = "no" VERSION = "1.0" INNERBORDER = "no" SELECTION = "yes" MAXIMIZEBUTTON = "no" MINIMIZEBUTTON = "yes" NAVIGABLE = "no" CONTEXTMENU = "no" BORDERSTYLE = "normal"/>
  40. <STYLE type="text/css">
  41. body {font-family:Tahoma,Verdana,Arial,Geneva; font-size:12; background-color:Buttonface }
  42. table {font-family:Tahoma,Verdana,Arial,Geneva; font-size:12; background-color:Buttonface }
  43. </STYLE>
  44. </HEAD>
  45. <SCRIPT language="JScript">
  46.  
  47. var Ws = new ActiveXObject("WScript.Shell");
  48. var Fs = new ActiveXObject("Scripting.FileSystemObject");
  49. var desktop = Ws.SpecialFolders("Desktop");
  50. var alldesktop = Ws.SpecialFolders("AllUsersDesktop");
  51. var startmenu = Ws.SpecialFolders("StartMenu");
  52. var allstartmenu = Ws.SpecialFolders("AllUsersStartMenu");
  53. var favoriten = Ws.SpecialFolders("Favorites");
  54. var tabledata = "";
  55. var buttondata= ""; 
  56. var i = 0; //counter (found hotkeys)
  57. var j = 0; //counter (all files)
  58.  
  59. /*
  60. function name: initfenster()
  61. parameters: void
  62. returns: void
  63. global vars: none
  64. purpose: sizes the application window, checks for correct IE version and starts the search for hotkeys
  65. */
  66. function initfenster() {
  67.   window.resizeTo(600, 330);
  68.   document.all.keytable.innerHTML = "Hledßm nadefinovanΘ klßvesovΘ zkratky. PoΦkejte prosφm...";
  69.   setTimeout("startsuche()", 500); //this will force an update of the application form
  70. }
  71.  
  72. /*
  73. function name: startsuche()
  74. parameters: void
  75. returns: void
  76. global vars: none, but expects a <DIV ID=keytable> to exist
  77. purpose: calls all the consecutive functions to search through folders that may contain hotkey-enabled URLs and LNKs
  78. */
  79. function startsuche() {
  80.   i=0; j=0; //reset counters
  81.   tabledata="";
  82.   if (desktop !="") { check4keys(desktop);}
  83.   if (alldesktop !="") { check4keys(alldesktop); }
  84.   if (startmenu !="") { check4keys(startmenu, "recursive"); }
  85.   if (favoriten !="") { check4keys(favoriten, "recursive"); }
  86.   if (allstartmenu !="") { check4keys(allstartmenu, "recursive"); }
  87.   document.all.keytable.innerHTML = "<TABLE cellpadding=\"2\" cellspacing=\"1\" border=\"2\" frame=\"box\" rules=\"rows\" style=\"width:100%;text-align:left;font-size:12\"><TBODY>"+tabledata+"</TBODY></TABLE><BR>";
  88.   document.all.statuszeile.innerHTML="<SPAN style=font-size:12\"><B>ProhledanΘ soubory: </B>"+j+"<B> NalezenΘ klßvesovΘ zkratky: </B>"+i+"</SPAN>";
  89. }
  90.  
  91.  
  92. /*
  93. function name: check4keys(folder, flag)
  94. parameters: folder (string, a folder that's being checked), flag (string, if flag is "recursive" then subfolders are also checked)
  95. returns: void
  96. global vars: Fs, Ws
  97. purpose: every LNK and URL file in folder is checked.  This functions probes for hotkeys in these files. Found hotkeys are written to a HTML table
  98. */
  99. function check4keys(folder,flag) {
  100.   var f = Fs.GetFolder(folder);
  101.   var fnum = new Enumerator(f.Files);
  102.   for (;!fnum.atEnd(); fnum.moveNext()) {
  103.     if (Fs.GetExtensionName(fnum.item()).toLowerCase() == "lnk") {
  104.       var shortcut = Ws.CreateShortcut(fnum.item());
  105.       j++
  106.       //if ( shortcut.Hotkey != "") { //didn┤t work on Win 95
  107.       if (shortcut.Hotkey.indexOf("+")>-1) {
  108.         i++;
  109.     tabledata += "<TR><TD style=\"vertical-align: top;\"><B>Soubor: </B>"+fnum.item().name+"<BR><B>Cesta: </B>"+fnum.item().ParentFolder+"</TD><TD style=\"vertical-align: right; width: 27%\"><B>Klßvesovß zkratka: </B><SPAN ID=S"+i+">"+shortcut.Hotkey.replace(/Ctrl/g,"Ctrl").replace(/Alt\+Ctrl/g,"Ctrl+Alt")+"</SPAN><BR><Input Type=\"button\" onclick=\"gotoexplore(\'"+fnum.item().path.replace(/\\/g,"\\\\")+"\')\" Title=\"Im Windows Explorer zeigen\" Value=\"Explorer\" style=\"font-size:12\"/><Input Type=\"button\" onclick=\"delkeyLNK(\'"+fnum.item().path.replace(/\\/g,"\\\\")+"\',\'"+i+"\')\" Title=\"Odstranit klßvesovou zkratku\" Value=\"Odstranit klßvesovou zkratku\" style=\"font-size:12\"/>"
  110.       }
  111.     }
  112.     if (Fs.GetExtensionName(fnum.item()).toLowerCase() == "url") {
  113.       var urlastxt = Fs.OpenTextFile(fnum.item(), 1);
  114.       while (!urlastxt.AtEndOfStream) {
  115.         var strhotkey = urlastxt.ReadLine();
  116.         if (strhotkey.indexOf("Hotkey=")>-1){
  117.           j++
  118.       if (String(strhotkey).substr(7)>0) {
  119.         i++;
  120.         tabledata += "<TR><TD style=\"vertical-align: top;\"><B>Soubor: </B>"+fnum.item().name+"<BR><B>Cesta: </B>"+fnum.item().ParentFolder+"</TD><TD style=\"vertical-align: right; width: 27%\"><B>Klßvesovß zkratka: </B><SPAN ID=S"+i+">"+calculatekey(String(strhotkey).substr(7))+"</SPAN><BR><Input Type=\"button\" onclick=\"gotoexplore(\'"+fnum.item().path.replace(/\\/g,"\\\\")+"\')\" Title=\"Zobrazit v Pr∙zkumnφku\" Value=\"Explorer\" style=\"font-size:12\"/><Input Type=\"button\" onclick=\"delkeyURL(\'"+fnum.item().path.replace(/\\/g,"\\\\")+"\',\'"+i+"\')\" Title=\"Odstranit klßvesovou zkratku\" Value=\"Odstranit klßvesovou zkratku\" style=\"font-size:12\"/>"
  121.           }
  122.         }
  123.       }
  124.       urlastxt.close();
  125.     }
  126.   }
  127.   if (flag =="recursive") {
  128.     fnum = new Enumerator(f.SubFolders);
  129.     for (;!fnum.atEnd(); fnum.moveNext()) {
  130.       check4keys(fnum.item(), "recursive");
  131.     }
  132.   }
  133. }
  134.  
  135.  
  136. /*
  137. function name: calculatekey(intval)
  138. parameters: intval (integer, a value representing an URL hotkey)
  139. returns: ckeys (string, a human-readable hotkey) 
  140. global vars: none, but the intval has to be read from the file before
  141. purpose: calculates the Windows hotkeys of an URL-file from integer values
  142. */
  143. function calculatekey(intval) {
  144.   var ckeys = "0";
  145.   switch ((intval & 255)^intval) {
  146.     case 0768 : ckeys = "Ctrl+Shift+" + String.fromCharCode(intval & 255); break;
  147.     case 1280 : ckeys = "Alt+Shift+" + String.fromCharCode(intval & 255); break;
  148.     case 1536 : ckeys = "Ctrl+Alt+" + String.fromCharCode(intval & 255); break;
  149.     case 1792 : ckeys = "Ctrl+Alt+Shift+" + String.fromCharCode(intval & 255);
  150.   }
  151.   return(ckeys)
  152. }
  153.  
  154.  
  155. /*
  156. function name: gotoexplore(pfad) 
  157. parameters: pfad (string, a file's path)
  158. returns: void
  159. global vars: Ws
  160. purpose: opens an explorer windows and selects a file 
  161. */
  162. function gotoexplore(pfad) {
  163.   Ws.Run("explorer.exe /select,\""+pfad+"\"");
  164. }
  165.  
  166.  
  167. /*
  168. function name: delkeyLNK(pfad, intval)
  169. parameters: pfad (string, path of an LNK file whose hotkey is deleted), intval (integer, a reference to it┤s HTML table entry)
  170. returns: void
  171. global vars: Ws
  172. purpose: if the "Odstranit klßvesovou zkratku" button is clicked, this functions removes the hotkey from the LNK file. The displayed key-combination is striked through in the HTML table
  173. */
  174. function delkeyLNK(pfad, intval) { 
  175.   var shortcut = Ws.CreateShortcut(pfad);
  176.   shortcut.Hotkey = "";
  177.   shortcut.Save();
  178.   document.all.item("S"+intval).style.textDecoration = "line-through";
  179.   document.all.item("S"+intval).style.fontStyle = "italic";
  180. }
  181.  
  182.  
  183. /*
  184. function name: delkeyURL(pfad, intval)
  185. parameters: pfad (string, path of an URL file whose hotkey is deleted), intval (integer, a reference to it┤s HTML table entry)
  186. returns: void
  187. global vars: Fs
  188. purpose: if the "Odstranit klßvesovou zkratku" button is clicked, this functions removes the hotkey from the URL file. The displayed key-combination is striked through in the HTML table
  189. */
  190. function delkeyURL(pfad, intval) { 
  191.   var urlastxt = Fs.OpenTextFile(pfad, 1);
  192.   var dateiinhalt = urlastxt.ReadAll();
  193.   urlastxt.Close()
  194.   dateiinhalt = dateiinhalt.replace(/Hotkey\=[0-9]*\r\n/,"");
  195.   var urlastxt = Fs.OpenTextFile(pfad, 2);
  196.   urlastxt.Write(dateiinhalt);
  197.   urlastxt.Close();
  198.   document.all.item("S"+intval).style.textDecoration = "line-through";
  199.   document.all.item("S"+intval).style.fontStyle = "italic";
  200. }
  201.  
  202. /*
  203. function name: printtab()
  204. parameters: none
  205. returns: void
  206. global vars:
  207. purpose: prints a table of the found link files and their hotkeys
  208. */
  209. function printtab() {
  210. var htmltab = open('','_blank','scrollbars=yes,menubar=yes,toolbar=yes,location=no,resizable=yes,titlebar=yes,width=400,height=460');
  211. htmltab.document.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"><html><head><meta name=\"generator\" content=\"HTML Tidy for Windows (vers 1st December 2004), see www.w3.org\"><title>P°ehled klßvesov²ch zkratek</title></head><body><b>Pou₧itΘ klßvesovΘ zkratky</b><br><table>"+tabledata.replace(/<Input [^>]*>/g,'').replace(/Datei:/g,'<br>Datei:').replace(/Tasten:/g,'<br>Tasten:')+"</table></body></html>");
  212. }
  213.  
  214. </SCRIPT>
  215. <BODY scroll="no" onload="initfenster()">
  216. <TABLE width="100%" cellpadding="2" cellspacing="1" border="0" frame="void">
  217. <TR>
  218. <TD>
  219. <B>Windows - klßvesovΘ zkratky</B>
  220. </TD>
  221. <TD align="right">
  222. <INPUT Type=button style="font-size:12;" value="Aktualizovat" onclick="startsuche();">
  223. <INPUT Type=button style="font-size:12;" value="Export" onclick="printtab();">
  224. </TD>
  225. </TR>
  226. </TABLE>
  227. <DIV ID=keytable Style="overflow:auto; height:80%;">Vyhledßvßm klßvesovΘ zkratky. PoΦkejte prosφm...</DIV>
  228. <HR style="height:2px; color:black">
  229. <SPAN ID=statuszeile></SPAN>
  230. </BODY>
  231. </HTML>