[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 如何调用系统的某些功能?

请问有人研究过如何调用系统自带的一些【功能】吗

比如调用右键菜单的 [固定到任务栏] 功能,实现批量固定程序到任务栏。

我在注册表找到固定到任务栏的GUID信息,是不是可以再找到这个功能对于的dll文件,然后通过调用api的方式来实现?

具体怎么查找api和调用我不会,不知道有没有简单的例子可以分享下

本帖最后由 flashercs 于 2021-1-15 20:49 编辑

"固定到任务栏和开始菜单.js.bat"
经实验 win7可以,win10 H2不行
  1. 0<1/*,:
  2. @echo off
  3. REM 用法:
  4. REM cscript -nologo -e:jscript %0 [-PinToTaskbar files] [-UnpinFromTaskbar files] [-PinToStart files] [-UnpinFromStart files]
  5. REM files 是以空格分割的文件列表
  6. REM cscript -nologo -e:jscript %0 -UnpinFromTaskbar "%windir%\system32\notepad.exe" "%windir%\system32\cmd.exe" "%programfiles(x86)%\internet explorer\iexplore.exe" -pintostart "C:\Users\Flashercs\OneDriveTools\Tools" "%windir%\system32\notepad.exe"
  7. @REM cscript -nologo -e:jscript %0 -PinToTaskbar "%windir%\system32\notepad.exe"
  8. cscript -nologo -e:jscript %0 -UnpinFromTaskbar "%windir%\system32\notepad.exe"
  9. exit /b %errorlevel%
  10. */;
  11. var ARGS = WScript.Arguments;
  12. if (ARGS.Length === 0) {
  13.   WScript.Echo('No file passed');
  14.   WScript.Echo('Usage(pins/unpins items to/from startmenu/taskbar):');
  15.   WScript.Echo(WScript.ScriptName + ' [-PinToTaskbar files] [-UnpinFromTaskbar files] [-PinToStart files] [-UnpinFromStart files]');
  16.   WScript.Quit(1);
  17. }
  18. var oFiles = {}, arr;
  19. for (var i = 0, l = ARGS.length; i < l; i++) {
  20.   switch (ARGS(i).toLowerCase()) {
  21.     case '-pintotaskbar':
  22.     case '/pintotaskbar':
  23.       arr = oFiles.pintotaskbar = [];
  24.       break;
  25.     case '-unpinfromtaskbar':
  26.     case '/unpinfromtaskbar':
  27.       arr = oFiles.unpinfromtaskbar = [];
  28.       break;
  29.     case '-pintostart':
  30.     case '/pintostart':
  31.       arr = oFiles.pintostart = [];
  32.       break;
  33.     case '-unpinfromstart':
  34.     case '/unpinfromstart':
  35.       arr = oFiles.unpinfromstart = [];
  36.       break;
  37.     default:
  38.       try {
  39.         arr.push(ARGS(i));
  40.       } catch (e) {
  41.       }
  42.   }
  43. }
  44. //fso
  45. var fso = new ActiveXObject('Scripting.FileSystemObject');
  46. function existsItem(path) {
  47.   return fso.FolderExists(path) || fso.FileExists(path);
  48. }
  49. //get windows version
  50. var version = GetObject('winmgmts://./root/cimv2').Get('Win32_OperatingSystem=@').Version;
  51. version = parseInt(version.replace(/\./g, ''));
  52. // WScript.Echo('os version=' + version);
  53. // if version is later than windows 7 there's pin to start screen instead pin to start menu
  54. if (version <= 619999) {
  55.   var startVerb1 = 'startpin';
  56. } else if (version < 10000000) {
  57.   startVerb1 = 'pintostartscreen';
  58. } else {
  59.   startVerb1 = '';
  60. }
  61. var objShell = new ActiveXObject('Shell.Application');
  62. var oFuncs = {
  63.   'pintotaskbar': function pintotaskbar(arrFiles) {
  64.     if (startVerb1 === '') {
  65.       var shell = new ActiveXObject('WScript.Shell');
  66.       var regkey = 'HKEY_CURRENT_USER\\Software\\Classes\\*\\shell\\taskbarpin\\';
  67.       var regvalue = 'ExplorerCommandHandler';
  68.       shell.RegWrite(regkey + regvalue, '{90AA3A4E-1CBA-4233-B8BB-535773D48449}', 'REG_SZ');
  69.       for (var i = 0, l = arrFiles.length; i < l; i++) {
  70.         var filename = arrFiles[i];
  71.         if (!existsItem(filename)) {
  72.           WScript.Echo(filename + 'does not exist.');
  73.           continue;
  74.         }
  75.         var fullFilename = fso.GetAbsolutePathName(filename);
  76.         var objFolder = objShell.NameSpace(fso.GetParentFolderName(fullFilename));
  77.         var objItem = objFolder.ParseName(fso.GetFileName(fullFilename));
  78.         WScript.Echo('pinning "' + fullFilename + '" to taskbar ');
  79.         objItem.InvokeVerb('taskbarpin');
  80.       }
  81.       shell.RegDelete(regkey);
  82.     } else {
  83.       for (var i = 0, l = arrFiles.length; i < l; i++) {
  84.         var filename = arrFiles[i];
  85.         if (!existsItem(filename)) {
  86.           WScript.Echo(filename + 'does not exist.');
  87.           continue;
  88.         }
  89.         var fullFilename = fso.GetAbsolutePathName(filename);
  90.         var objFolder = objShell.NameSpace(fso.GetParentFolderName(fullFilename));
  91.         var objItem = objFolder.ParseName(fso.GetFileName(fullFilename));
  92.         WScript.Echo('pinning "' + fullFilename + '" to taskbar ');
  93.         objItem.InvokeVerb('taskbarpin');
  94.       }
  95.     }
  96.   },
  97.   'unpinfromtaskbar': function unpinfromtaskbar(arrFiles) {
  98.     if (startVerb1 === '') {
  99.       var shell = new ActiveXObject('WScript.Shell');
  100.       var regkey = 'HKEY_CURRENT_USER\\Software\\Classes\\*\\shell\\taskbarpin\\';
  101.       var regvalue = 'ExplorerCommandHandler';
  102.       shell.RegWrite(regkey + regvalue, '{90AA3A4E-1CBA-4233-B8BB-535773D48449}', 'REG_SZ');
  103.       for (var i = 0, l = arrFiles.length; i < l; i++) {
  104.         var filename = arrFiles[i];
  105.         if (!existsItem(filename)) {
  106.           WScript.Echo(filename + 'does not exist.');
  107.           continue;
  108.         }
  109.         var fullFilename = fso.GetAbsolutePathName(filename);
  110.         var objFolder = objShell.NameSpace(fso.GetParentFolderName(fullFilename));
  111.         var objItem = objFolder.ParseName(fso.GetFileName(fullFilename));
  112.         WScript.Echo('Unpinning "' + fullFilename + '" from taskbar.');
  113.         objItem.InvokeVerb('taskbarpin');
  114.       }
  115.       shell.RegDelete(regkey);
  116.     } else {
  117.       for (var i = 0, l = arrFiles.length; i < l; i++) {
  118.         var filename = arrFiles[i];
  119.         if (!existsItem(filename)) {
  120.           WScript.Echo(filename + 'does not exist.');
  121.           continue;
  122.         }
  123.         var fullFilename = fso.GetAbsolutePathName(filename);
  124.         var objFolder = objShell.NameSpace(fso.GetParentFolderName(fullFilename));
  125.         var objItem = objFolder.ParseName(fso.GetFileName(fullFilename));
  126.         WScript.Echo('Unpinning "' + fullFilename + '" from taskbar.');
  127.         objItem.InvokeVerb('taskbarunpin');
  128.       }
  129.     }
  130.   },
  131.   'pintostart': function pintostart(arrFiles) {
  132.     var re = /Pin to Start|固定到.?开始/i;
  133.     for (var i = 0, l = arrFiles.length; i < l; i++) {
  134.       var filename = arrFiles[i];
  135.       if (!existsItem(filename)) {
  136.         WScript.Echo(filename + 'does not exist.');
  137.         continue;
  138.       }
  139.       var fullFilename = fso.GetAbsolutePathName(filename);
  140.       var objFolder = objShell.NameSpace(fso.GetParentFolderName(fullFilename));
  141.       var objItem = objFolder.ParseName(fso.GetFileName(fullFilename));
  142.       var verbs = objItem.Verbs();
  143.       for (var j = 0; j < verbs.Count; j++) {
  144.         if (re.test(verbs.Item(j).Name.replace(/&/g, ''))) {
  145.           WScript.Echo('pinning "' + fullFilename + '" to start menu.');
  146.           verbs.Item(j).DoIt();
  147.           break;
  148.         }
  149.       }
  150.     }
  151.   },
  152.   'unpinfromstart': function unpinfromstart(arrFiles) {
  153.     var re = /Unpin from Start|从.?开始.*取消固定/i;
  154.     for (var i = 0, l = arrFiles.length; i < l; i++) {
  155.       var filename = arrFiles[i];
  156.       if (!existsItem(filename)) {
  157.         WScript.Echo(filename + 'does not exist.');
  158.         continue;
  159.       }
  160.       var fullFilename = fso.GetAbsolutePathName(filename);
  161.       var objFolder = objShell.NameSpace(fso.GetParentFolderName(fullFilename));
  162.       var objItem = objFolder.ParseName(fso.GetFileName(fullFilename));
  163.       var verbs = objItem.Verbs();
  164.       for (var j = 0; j < verbs.Count; j++) {
  165.         if (re.test(verbs.Item(j).Name.replace(/&/g, ''))) {
  166.           WScript.Echo('Unpinning "' + fullFilename + '" from start menu.');
  167.           verbs.Item(j).DoIt();
  168.           break;
  169.         }
  170.       }
  171.     }
  172.   }
  173. };
  174. for (var key in oFiles) {
  175.   oFuncs[key](oFiles[key]);
  176. }
复制代码
微信:flashercs
QQ:49908356

TOP

只需要调用一个API就可以实现将你的程序固定到任务栏
  1. ShellExecute(NULL, "taskbarpin",   "C:\....\你的程序.lnk", NULL, NULL, 0);
复制代码
WIN7测试成功,但WIN10没有用。

TOP

确实,很多方法win10用不了了

TOP

返回列表