b1t5tR3@m Posted September 15, 2006 Share Posted September 15, 2006 Has anyone accomplished this, and I mean "this" in the sense of passing a selected / focused file (right-clicked) as a variable to then be manipulated by AutoIt? I spent a great deal of time at MSDN the other day thinking there could be a way through COM or oShell (and there probably is), but got no where. I have also combed the forums for past posts relating to this topic but found nothing helpful. If you know what I'm talking about and can be of any help, I would sincerely appreciate it. Link to comment Share on other sites More sharing options...
lod3n Posted September 15, 2006 Share Posted September 15, 2006 (edited) I think that requires some DLL programming. What I've done is placed some compiled scripts in my Send To folder, with these two lines at the top:#include <Array.au3> $targetfile = _ArrayToString ( $cmdline, " ", 1)Hope that's useful. Edited September 15, 2006 by lod3n [font="Fixedsys"][list][*]All of my AutoIt Example Scripts[*]http://saneasylum.com[/list][/font] Link to comment Share on other sites More sharing options...
Bert Posted September 15, 2006 Share Posted September 15, 2006 I'm not quite following you on what you want to do. Do you want to have a application you can right click on, and have a menu show up? The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
b1t5tR3@m Posted September 15, 2006 Author Share Posted September 15, 2006 I'm not quite following you on what you want to do. Do you want to have a application you can right click on, and have a menu show up?Let me further explain what I endeavor to do....A while back, I came up with a GUI for SolidSnake's UDF's that interacted with the MD5 Deep hash utilities (Here). While I have made quite a few improvements with usage, I thought that it would be 1) prudent to add CRC32 functionality to it (even though it's been basically retired from usage), and 2) modify it slightly to be used as a context menu function. You would, in theory, right-click on a particular file and choose "Hash this file". This would in turn call a modified compiled AutoIt script which would generate the hashes for you.I hope that explanation gives you a better understanding of what it is I am trying to accomplish.I've already set up right-click functionality through the registry, I believe at this point I am looking at working with COM or something. I need to pass the "active" file as a variable to AutoIt. Got tired looking through MSDN for one day. Link to comment Share on other sites More sharing options...
MHz Posted September 16, 2006 Share Posted September 16, 2006 I've already set up right-click functionality through the registry, I believe at this point I am looking at working with COM or something. I need to pass the "active" file as a variable to AutoIt. Got tired looking through MSDN for one day.Just setup a incoming cmdline structure in your script to handle the passed path through the registry should be enough. This code will register/unregister the entry in registry (via no parameter passed or cmdline). Add entended value so it is not shown by default in contextmenu (press shift to see item). expandcollapse popup#region - Includes #include <Constants.au3> #endregion #region - Global Variables Global Const $REG_KEY = 'HKLM\SOFTWARE\Classes\*\shell\MD5_DeepHash' #endregion #region - CmdlineSwitch If $CMDLINE[0] Then For $i = 1 To $CMDLINE[0] Switch $CMDLINE[$i] Case '/?' MsgBox(0x40000, StringTrimRight(@ScriptName, 4) & ' Help', _ 'Switches are:' & @LF _ & @LF & '/extract' _ & @LF & @TAB & 'Extract files to current directory' _ & @LF & '/register' _ & @LF & @TAB & 'Add registration into context menu' _ & @LF & '/unregister' _ & @LF & @TAB & 'Remove registration from context menu') Exit Case '/extract' ;~ FileInstall('?', @ScriptDir & '\') Exit Case '/register' RegWrite($REG_KEY, '', 'Reg_sz', 'Hash This File') RegWrite($REG_KEY, 'extended', 'Reg_sz', ''); only see item with shift key pressed RegWrite($REG_KEY & '\Command', '', 'Reg_sz', '"' & @ScriptFullPath & '" "%1"') MsgBox(0x40000, 'MD5', 'Registered') Exit Case '/unregister' RegDelete($REG_KEY) MsgBox(0x40000, 'MD5', 'UnRegistered') Exit Case Else Const $FILE_PATH = $CMDLINE[$i] If Not FileExists($FILE_PATH) Then MsgBox(0x40030, 'MD5', 'File parameter is invalid') Exit EndIf EndSwitch Next Else If RegRead($REG_KEY, '') Then If MsgBox(0x40021, @ScriptName, 'Do you want to remove ' & @ScriptName & ' from the registry?') = $IDOK Then RegDelete($REG_KEY) EndIf Else If MsgBox(0x40021, @ScriptName, 'Do you want to add ' & @ScriptName & ' to the registry?') = $IDOK Then RegWrite($REG_KEY, '', 'Reg_sz', 'Hash This File') RegWrite($REG_KEY, 'extended', 'Reg_sz', ''); only see item with shift key pressed RegWrite($REG_KEY & '\Command', '', 'Reg_sz', '"' & @ScriptFullPath & '" "%1"') EndIf EndIf Exit EndIf #endregion ; Code below MsgBox(0, 'File path is', $FILE_PATH) You will need to compile to have it execute from registry. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now