home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 December (Special) / PCWorld_2004-12_Special_cd.bin / Windows / komfort / komfort.exe / pcwHotkeys.HTA < prev    next >
Text File  |  2004-02-20  |  9KB  |  215 lines

  1. <HTML><!--
  2. /*
  3. Purpose:
  4. This tool based on JScript displays all user defined Windows
  5. hotkeys in LNK and URL files. It searches through the
  6. following directories:
  7. %USERPROFILE%\Desktop
  8. %ALLUSERSPROFILE%\AllUsersDesktop (2000, XP only)
  9. %USERPROFILE%\StartMenu
  10. %ALLUSERSPROFILE%\AllUsersStartMenu (2000, XP only)
  11. %USERPROFILE%\Favorites
  12.  
  13. Author:
  14. Copyright (C) 2003 David G. Wolski (admi@india.com)
  15. for PC-WELT, IDG Magazine Verlag GmbH (http://www.pcwelt.de)
  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. */-->
  33. <HEAD>
  34. <TITLE>Skript PC WORLDu: DefinovanΘ klßvesovΘ zkratky</TITLE>
  35. <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 = "no" MAXIMIZEBUTTON = "no" MINIMIZEBUTTON = "yes" NAVIGABLE = "no" CONTEXTMENU = "no" BORDERSTYLE = "normal"/>
  36. <STYLE type="text/css">
  37. body {font-family:Tahoma,Verdana,Arial,Geneva; font-size:12; background-color:Buttonface }
  38. table {font-family:Tahoma,Verdana,Arial,Geneva; font-size:12; background-color:Buttonface }
  39. </STYLE>
  40. </HEAD>
  41. <SCRIPT language="JScript">
  42.  
  43. var Ws = new ActiveXObject("WScript.Shell");
  44. var Fs = new ActiveXObject("Scripting.FileSystemObject");
  45. var desktop = Ws.SpecialFolders("Desktop");
  46. var alldesktop = Ws.SpecialFolders("AllUsersDesktop");
  47. var startmenu = Ws.SpecialFolders("StartMenu");
  48. var allstartmenu = Ws.SpecialFolders("AllUsersStartMenu");
  49. var favoriten = Ws.SpecialFolders("Favorites");
  50. var tabledata = "";
  51. var buttondata= ""; 
  52. var i = 0; //counter (found hotkeys)
  53. var j = 0; //counter (all files)
  54.  
  55. /*
  56. function name: initfenster()
  57. parameters: void
  58. returns: void
  59. global vars: none
  60. purpose: sizes the application window, checks for correct IE version and starts the search for hotkeys
  61. */
  62. function initfenster() {
  63.   window.resizeTo(600, 330);
  64.   document.all.keytable.innerHTML = "Hledßm klßvesovΘ zkratky. PoΦkejte prosφm ..."
  65.   setTimeout("startsuche()", 20) //this will force an update of the application form
  66. }
  67.  
  68.  
  69. /*
  70. function name: startsuche()
  71. parameters: void
  72. returns: void
  73. global vars: none, but expects a <DIV ID=keytable> to exist
  74. purpose: calls all functions to search the folders that may contain valid hotkey-enabled URLs and LNKs
  75. */
  76. function startsuche() {
  77.   i=0; j=0; //reset counters
  78.   tabledata="";
  79.   if (desktop !="") { check4keys(desktop);}
  80.   if (alldesktop !="") { check4keys(alldesktop); }
  81.   if (startmenu !="") { check4keys(startmenu, "recursive"); }
  82.   if (favoriten !="") { check4keys(favoriten, "recursive"); }
  83.   if (allstartmenu !="") { check4keys(allstartmenu, "recursive"); }
  84.   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>";
  85.   document.all.statuszeile.innerHTML="<SPAN style=font-size:12\"><B>PoΦet prohledan²ch soubor∙: </B>"+j+"<B> PoΦet nalezen²ch klßvesov²ch zkratek: </B>"+i+"</SPAN>";
  86. }
  87.  
  88.  
  89. /*
  90. function name: check4keys(folder, flag)
  91. parameters: folder (string, a folder that's being checked), flag (string, if flag is "recursive" then subfolders are also checked)
  92. returns: void
  93. global vars: Fs, Ws
  94. purpose: every LNK and URL file in folder is checked. If so, this functions probes for hotkeys in these files. The results are written in a HTML table
  95. */
  96. function check4keys(folder,flag) {
  97.   var f = Fs.GetFolder(folder);
  98.   var fnum = new Enumerator(f.Files);
  99.   for (;!fnum.atEnd(); fnum.moveNext()) {
  100.     if (Fs.GetExtensionName(fnum.item()).toLowerCase() == "lnk") {
  101.       var shortcut = Ws.CreateShortcut(fnum.item());
  102.       j++
  103.       //if ( shortcut.Hotkey != "") { //didn┤t work on Win 95
  104.       if (shortcut.Hotkey.indexOf("+")>-1) {
  105.         i++;
  106.     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ßvesy: </B><SPAN ID=S"+i+">"+shortcut.Hotkey.replace(/Ctrl/g,"Strg").replace(/Alt\+Strg/g,"Strg+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 tyto klßvesovΘ zkratky\" Value=\"Odstranit klßvesovou zkratku\" style=\"font-size:12\"/>"
  107.       }
  108.     }
  109.     if (Fs.GetExtensionName(fnum.item()).toLowerCase() == "url") {
  110.       var urlastxt = Fs.OpenTextFile(fnum.item(), 1);
  111.       while (!urlastxt.AtEndOfStream) {
  112.         var strhotkey = urlastxt.ReadLine();
  113.         if (strhotkey.indexOf("Hotkey=")>-1){
  114.           j++
  115.       if (String(strhotkey).substr(7)>0) {
  116.         i++;
  117.         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ßvesy: </B><SPAN ID=S"+i+">"+calculatekey(String(strhotkey).substr(7))+"</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=\"delkeyURL(\'"+fnum.item().path.replace(/\\/g,"\\\\")+"\',\'"+i+"\')\" Title=\"Odstranit tyto klßvesovΘ zkratky\" Value=\"Odstranit klßvesovou zkratku\" style=\"font-size:12\"/>"
  118.           }
  119.         }
  120.       }
  121.       urlastxt.close();
  122.     }
  123.   }
  124.   if (flag =="recursive") {
  125.     fnum = new Enumerator(f.SubFolders);
  126.     for (;!fnum.atEnd(); fnum.moveNext()) {
  127.       check4keys(fnum.item(), "recursive");
  128.     }
  129.   }
  130. }
  131.  
  132.  
  133. /*
  134. function name: calculatekey(intval)
  135. parameters: intval (integer, a value representing an URL hotkey)
  136. returns: ckeys (string, a human-readable hotkey) 
  137. global vars: none, but the integer has to be read from the file beforehand
  138. purpose: calculates the Windows hotkeys of an URL-file from the integer values
  139. */
  140. function calculatekey(intval) {
  141.   var ckeys = "0";
  142.   switch ((intval & 255)^intval) {
  143.     case 0768 : ckeys = "Strg+Shift+" + String.fromCharCode(intval & 255); break;
  144.     case 1280 : ckeys = "Alt+Shift+" + String.fromCharCode(intval & 255); break;
  145.     case 1536 : ckeys = "Strg+Alt+" + String.fromCharCode(intval & 255); break;
  146.     case 1792 : ckeys = "Strg+Alt+Shift+" + String.fromCharCode(intval & 255);
  147.   }
  148.   return(ckeys)
  149. }
  150.  
  151.  
  152. /*
  153. function name: gotoexplore(pfad) 
  154. parameters: pfad (string, a file's path)
  155. returns: void
  156. global vars: Ws
  157. purpose: opens an explorer windows and selects the given file 
  158. */
  159. function gotoexplore(pfad) {
  160.   Ws.Run("explorer.exe /select,\""+pfad+"\"");
  161. }
  162.  
  163.  
  164. /*
  165. function name: delkeyLNK(pfad, intval)
  166. parameters: pfad (string, path of an LNK file whose hotkey is deleted), intval (integer, a reference to it┤s HTML table entry)
  167. returns: void
  168. global vars: Ws
  169. purpose: if the "Hotkey l÷schen" button is clicked, this functions removes the hotkey from the LNK file. The displayed key-combination is striked through in the HTML table
  170. */
  171. function delkeyLNK(pfad, intval) { 
  172.   var shortcut = Ws.CreateShortcut(pfad);
  173.   shortcut.Hotkey = "";
  174.   shortcut.Save();
  175.   document.all.item("S"+intval).style.textDecoration = "line-through";
  176.   document.all.item("S"+intval).style.fontStyle = "italic";
  177. }
  178.  
  179.  
  180. /*
  181. function name:
  182. parameters: pfad (string, path of an URL file whose hotkey is deleted), intval (integer, a reference to it┤s HTML table entry)
  183. returns: void
  184. global vars: Fs
  185. purpose: if the "Hotkey l÷schen" button is clicked, this functions removes the hotkey from the URL file. The displayed key-combination is striked through in the HTML table
  186. */
  187. function delkeyURL(pfad, intval) { 
  188.   var urlastxt = Fs.OpenTextFile(pfad, 1);
  189.   var dateiinhalt = urlastxt.ReadAll();
  190.   urlastxt.Close()
  191.   dateiinhalt = dateiinhalt.replace(/Hotkey\=[0-9]*\r\n/,"");
  192.   var urlastxt = Fs.OpenTextFile(pfad, 2);
  193.   urlastxt.Write(dateiinhalt);
  194.   urlastxt.Close();
  195.   document.all.item("S"+intval).style.textDecoration = "line-through";
  196.   document.all.item("S"+intval).style.fontStyle = "italic";
  197. }
  198.  
  199. </SCRIPT>
  200. <BODY scroll="no" onload="initfenster()">
  201. <TABLE width="100%" cellpadding="2" cellspacing="1" border="0" frame="void">
  202. <TR>
  203. <TD>
  204. <B>Windows-Hotkeys:</B>
  205. </TD>
  206. <TD align="right">
  207. <INPUT Type=button style="font-size:12;" value="Aktualizovat" onclick="startsuche();">
  208. </TD>
  209. </TR>
  210. </TABLE>
  211. <DIV ID=keytable Style="overflow:auto; height:80%;">Hledßm klßvesovΘ zkratky. PoΦkejte prosφm...</DIV>
  212. <HR style="height:2px; color:black">
  213. <SPAN ID=statuszeile></SPAN>
  214. </BODY>
  215. </HTML>