Jump to content

Search the Community

Showing results for tags 'shell'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office


  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Member Title




Found 14 results

  1. I'm trying to run a #.LNK file on my desktop as administrator. This is what I mixed together from several resources: #AutoIt3Wrapper_Version=p #include <GUIConstantsEx.au3> #include <WinAPICom.au3> #include <WinAPIConv.au3> #include <WinAPIShellEx.au3> Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc") Const $CLSCTX_INPROC_SERVER = 1, $STGM_READ = 0, $SLR_NOUPDATE = 8, $SLR_NO_UI = 1, $SLGP_UNCPRIORITY = 2, $MAX_PATH = 260, $SW_SHOWDEFAULT = 10 Const $sCLSID_ShellLink = "{00021401-0000-0000-C000-000000000046}", _ $sCLSID_IID_IShellLinkW = "{000214F9-0000-0000-C000-000000000046}", _ $sCLSID_IID_IPersistFile = "{0000010b-0000-0000-C000-000000000046}" Const $dtagIUnknown = "QueryInterface hresult(ptr;ptr*);AddRef dword();Release dword();", _ $tag_IPersist = "GetClassID hresult(long);", _ $tag_IPersistFile = $tag_IPersist & _ ; Inherits from IPersist "IsDirty hresult();" & _ "Load hresult(wstr;dword);" & _ "Save hresult(wstr;bool);" & _ "SaveCompleted hresult(long);" & _ "GetCurFile hresult(long);" Const $tagIShellLinkW = _ "GetPath hresult(wstr;int;ptr*;dword);" & _ "GetIDList hresult(ptr*);" & _ "SetIDList hresult(ptr);" & _ "GetDescription hresult(wstr;int);" & _ "SetDescription hresult(wstr);" & _ "GetWorkingDirectory hresult(wstr;int);" & _ "SetWorkingDirectory hresult(wstr);" & _ "GetArguments hresult(wstr;int);" & _ "SetArguments hresult(wstr);" & _ "GetHotkey hresult(word*);" & _ "SetHotkey hresult(word);" & _ "GetShowCmd hresult(int*);" & _ "SetShowCmd hresult(int);" & _ "GetIconLocation hresult(wstr;int;ptr*);" & _ "SetIconLocation hresult(wstr;int);" & _ "SetRelativePath hresult(wstr);" & _ "Resolve hresult(hwnd;dword);" & _ "SetPath hresult(wstr);" Func RunAsAdmin($sFilename) Local $sTargetPath = "" If StringRight($sFilename, 4) = ".lnk" Then Local $tCLSID_IID_IPersistFile = _WinAPI_GUIDFromString($sCLSID_IID_IPersistFile) Local $oShellLink = ObjCreateInterface($sCLSID_ShellLink, $sCLSID_IID_IShellLinkW, $tagIShellLinkW) If Not IsObj($oShellLink) Then ConsoleWrite("Error creating ShellLink object" & @CRLF) Return SetError(1, 0, False) EndIf Local $pIPersistFile = 0 $oShellLink.QueryInterface($tCLSID_IID_IPersistFile, $pIPersistFile) If $pIPersistFile = 0 Then ConsoleWrite("Error creating $pIPersistFile pointer" & @CRLF) Return SetError(2, 0, False) EndIf Local $oIPersistFile = ObjCreateInterface($pIPersistFile, $sCLSID_IID_IPersistFile, $tag_IPersistFile) If Not IsObj($oIPersistFile) Then ConsoleWrite("Error creating IPersistFile object" & @CRLF) Return SetError(2, 0, False) EndIf $oIPersistFile.Load($sFilename, $STGM_READ) $oShellLink.Resolve(Null, BitOR($SLR_NO_UI, $SLR_NOUPDATE)) $oShellLink.GetPath($sTargetPath, $MAX_PATH, Null, $SLGP_UNCPRIORITY) ;~ $oIPersistFile.Release() ;~ $oShellLink.Release() If $sTargetPath = "" Then Return SetError(3, 0, False) EndIf Else $sTargetPath = $sFilename EndIf Local $tSHELLEXECUTEINFO = DllStructCreate($tagSHELLEXECUTEINFO), $tFileBuff = DllStructCreate("wchar file[256]"), $tProperty = DllStructCreate("wchar verb[256]") DllStructSetData($tFileBuff, 1, $sTargetPath) DllStructSetData($tProperty, 1, "runas") With $tSHELLEXECUTEINFO ;https://learn.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-shellexecuteinfoa .Size = DllStructGetSize($tSHELLEXECUTEINFO) .Mask = BitOR($SEE_MASK_FLAG_DDEWAIT, $SEE_MASK_INVOKEIDLIST, $SEE_MASK_FLAG_LOG_USAGE) .File = $tFileBuff.file .Verb = $tProperty.verb .Show = $SW_SHOWDEFAULT EndWith If _WinAPI_ShellExecuteEx($tSHELLEXECUTEINFO) = 0 Or @error Then Return SetError(4, 0, False) Return True EndFunc Func _ErrFunc() ConsoleWrite("! COM Error ! Number: 0x" & Hex($oError.number, 8) & " ScriptLine: " & $oError.scriptline & " - " & $oError.windescription & @CRLF) EndFunc ;==>_ErrFunc ConsoleWrite(RunAsAdmin(@DesktopDir & "\CMD.lnk") & " / " & @error & @CRLF) Just create a shortcut on your desktop from C:\Windows\System32\cmd.exe and rename it to CMD. My problem is that the script works sometimes and sometime not, getting the em: "C:\...\test18.au3" (63) : ==> Error in expression.: $oShellLink.GetPath($sTargetPath, $MAX_PATH, Null, $SLGP_UNCPRIORITY) ^ ERROR This stuff is new to me and any help is appreciated.
  2. I just found out and want to share #include <MsgBoxConstants.au3> #include <Array.au3> ;~ ShellExecute(@WindowsDir & "\explorer.exe", ",") ;Open an Explorer window at 'the Computer ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:MyComputerFolder") ;Open an Explorer window at 'the Computer ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:AppUpdatesFolder") ;Display installed Windows Updates ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:Cache") ;Open the Temporary Internet Files folder ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:ControlPanelFolder") ;Display the Control Panel ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:Desktop") ;Open the user’s desktop folder ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:DpAPIKeys") ;Opens the user’s AppData\Roaming\Microsoft\Protect folder ;~ ShellExecute(@WindowsDir & "\explorer.exe", "Shell:AccountPictures") ;Account Pictures ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:Profile") ;Open the user’s profile folder ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:Links") ;Open the user’s Links folder ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:User Pinned") ;Access shortcuts pinned to the Start menu or Taskbar ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:Quick Launch") ;Open the Quick Launch folder (disabled by default) ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:Recent") ;Open the user’s Recent Documents folder ;~ ShellExecute(@WindowsDir & "\explorer.exe", "shell:SendTo") ;Open the user’s Send To folder ShellExecute(@WindowsDir & "\explorer.exe", "shell:AppUpdatesFolder") ;Display installed Windows Updates ;~ More at https://ss64.com/nt/shell.html ;~ ShellExecute(@WindowsDir & "\explorer.exe", "ms-settings:autoplay") ;AutoPlay ;~ ShellExecute(@WindowsDir & "\explorer.exe", "ms-settings:privacy-email") ;Email & app accounts ;~ ShellExecute(@WindowsDir & "\explorer.exe", "ms-settings:yourinfo") ;Your info (Microsoft account) ShellExecute(@WindowsDir & "\explorer.exe", "ms-settings:windowsupdate-history") ;WinUpdate - Update history ;~ More at https://ss64.com/nt/syntax-settings.html ;~ _RestartExplorer() ;---------------------------------------------------------------------------------------- Func _RestartExplorer() ; Close a list of explorer.exe processes returned by ProcessList. Local $aProcessList = ProcessList("explorer.exe") For $i = 1 To $aProcessList[0][0] ConsoleWrite("- ProcessClose=" & ProcessClose($aProcessList[$i][1]) _ & ", PID:" & $aProcessList[$i][1] & ", " & $aProcessList[$i][0] & @CRLF) Next EndFunc ;==>Example ;----------------------------------------------------------------------------------------
  3. I am trying to spawn a cmd.exe shell on a remote machine using psexec then proceed to running commands on that machine and reading the output. I.e. running pwd. Unfortunately, the code I have now will just immediately exit cmd on the remote system I'm trying to use the current code #include <Constants.au3> $pid = Run('C:\Users\test\Desktop\psexec.exe \\ -u test -p "P@$$word1" -h -s cmd',@SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD) StdinWrite($pid,"pwd") StdinWrite($pid,@CRLF) Local $data Sleep(2000) $data &= StdoutRead($pid) ConsoleWrite("Debug:" & $data & @LF) StdinWrite($pid,"cd ") StdinWrite($pid,"C:\users\test2") StdinWrite($pid,@CRLF) StdinWrite($pid) $data &= StdoutRead($pid) ConsoleWrite("Debug:" & $data & @LF) http://stackoverflow.com/questions/19206834/command-prompt-and-autoit-stdinwrite <- credits to this stack overflow post Unfortunately, on my end, my cmd just starts/stops with this prompt Connecting with PsExec service on 192.1.123...Starting cmd on cmd exited on with error code 0. Any ideas how I can keep my shell open over psexec and still interact with it using AutoIT? Any feed back would be amazing! Thanks!
  4. I want to listen for certain windows events like window open/closed. After reading the help I think I need to use ObjCreate('shell.application') and ObjEvent with that object to create/register a listener. The problem is I don't know what interface or events (i.e. the specific event names) are available for the listener. I tried searching MSDN but it is a labyrinth and I'm not that familiar with the programming frameworks/models used by Windows, and all the examples seem to refer to compiled code using .NET or some other api. Can any1 point me in the right direction? Also is using COM objects considered the 'modern' way to do this, or should I be using some other framework/resources?
  5. How can I run this command:      Send( 'C:\xampp\htdocs\myApp\BuildDVD.exe ..\..\projects\dvdrom\' & $sFileName & '\project.xml ..\..\projects\' & $sFileName & '\video') in a Shell Execute? I can run ShellExecute('C:\xampp\htdocs\myApp\BuildDVD.exe') but how to I add the rest of the command?
  6. How can I check wether my current autoitscript (.exe) has finished, my problem is that I have a button which starts the autoit, if the user clicks twice in the button or more times the script shall check if its runs or not
  7. How can I start the Window SHell Explorer after closing it with this: Run('TASKKILL /F /PID ' & ProcessExists('explorer.exe'))
  8. Hi all, Is it possible to get the object of a "Open" or "Save As" window. I have tested with the ObjGet function, but didn't get a result. And error number is something like this -245404447. All i need to navigate a specific folder from this "Open" or "Save As" window.
  9. Hi all, Not specifically related to autoit, but probably easiest way for me, to address my question to experienced coders. I know how to add a single item and command to windows context menu for desktop, my computer, drives, directories and file types but I failed to find a simple answer on how to make new otem + subitem. All what I am trying to achieve is to build up context windows menus with subitems, giving me an option to run my script on directories with different parameters. So, how do we do it?
  10. (The title of this example was originally "The Shell/Custom Favorites/Programs Menus".) This is an implementation of the Shell Favorites and Programs menus with the IShellMenu interface. The purpose of this menu system is to create a popup menu from a directory structure consisting of subfolders and internet or program links. The menu will look like the Favorites menu in Internet or Windows Explorer (as it looked when XP SP2 was released in August 2004). The IShellMenu interface can generally be used to create a menu from a directory structure. The menu items will be supplied with the same icons as the link files and they will be supplied with tooltips too. When you click a menu item the command associated with the internet or program link will be executed. The Favorites and Programs menus will create popup menus from the directory structures given by $CSIDL_FAVORITES, $CSIDL_PROGRAMS, $CSIDL_STARTMENU, $CSIDL_COMMON_PROGRAMS, $CSIDL_COMMON_STARTMENU. The Custom Favorites and Custom Programs menus can be used to create custom popup menus from custom directory structures. Note that the context (right click) menu is working in the Favorites menu. Update #4 2014-05-03: AutoIt 3.3.10 This example was created under 3.3.8 and based on APIConstants.au3 and WinAPIEx.au3 by Yashied. The original example runs under 3.3.10 without any changes at all. But a lot of unused constants and functions are included. In 3.3.10 the two UDFs are divided into several smaller UDFs. This makes it much easier to just include, what is needed. This update only includes the necessary UDFs. You find the new and old zip in bottom of the post. Update #3 2012-11-06: Programs menus Added the Programs menus from the directory structures given by $CSIDL_PROGRAMS, $CSIDL_STARTMENU, $CSIDL_COMMON_PROGRAMS, $CSIDL_COMMON_STARTMENU. To create a menu like the "All Programs" menu copy the two "Start Menu" folders (your own + "All Users") to the "Custom Programs 1" folder and overwrite the existing "Start Menu" folder. Then select the menu item "Custom Programs | Custom Programs 1". Update #2 2012-11-03: Custom Favorites menus If you are creating an AutoIt program and want to add a custom Favorites menu with relevant internet links all you have to do is to create a directory structure, add the subfolders (optional) and links and call the ShowFavsProgsMenu() function with a path to the directory. And you will get a menu that looks like and works like the Favorites menu in Internet Explorer. You can see two custom Favorites menus in the examples. Added two small directory structures to the zip to be used for the custom Favorites menus. Fixed an error: OleInitialize() is used to initialize COM in stead of CoInitialize() (necessary to make the Copy command in the context menu work). Update #1 2012-11-01: Window procedure Because a popup menu like the Favorites menu is modal, it's necessary to use some kind of a window procedure to catch the menu messages. When it's a popup menu it should be enough to have the window procedure running while the popup menu is displayed. In the original scripts the window procedure was created with these commands: $hNewWinProc = DllCallbackRegister( "NewWindowProc", "int", "hwnd;uint;wparam;lparam" ) ; New window procedure $hOldWinProc = _WinAPI_SetWindowLong( $hGui, $GWL_WNDPROC, DllCallbackGetPtr( $hNewWinProc ) ) ; Old window procedureThe procedure was started in the main script in the example and was running as long as the script was running. In this update the menu messages is catched with a hook procedure: $hFavMenuMsg = DllCallbackRegister( "FavMenuMsg", "long", "int;wparam;lparam" ) $hFavMenuMsgHook = _WinAPI_SetWindowsHookEx( $WH_MSGFILTER, DllCallbackGetPtr( $hFavMenuMsg ), 0, _WinAPI_GetCurrentThreadId() ) ; $WH_MSGFILTER installs a hook procedure that monitors messages generated as a ; result of an input event in a dialog box, message box, menu, or scroll bar.The procedure is started in the bottom of the ShowFavoritesMenu() function immediately after the Favorites menu is displayed on the screen, and the procedure is stopped when the menu disappears from the screen. Either because the menu is cancelled or a selection is made. (If you comment out these commands in ShellFavoritesMenu.au3 the Favorites menu will still show up. But the submenus will not be expanded if you keep the mouse steady over a submenu or use the arrow keys.) This hook procedure is much better than the original window procedure. It's much easier to integrate the Favorites menu in other programs when it isn't depending on a "global" window procedure. A "global" window procedure can also have some influence on the GUI (at least on XP, I think it's better on 7). In the original example you saw it clearly when the GUI lost focus. When the GUI got focus back the upper line of the edit box could be behind the toolbar. This is not a problem with a hook procedure only running when the Favorites menu is displayed. Added an example with a menu. Zip updated. First post 2012-10-30 This is an implementation of the Favorites menu primary with the IShellMenu interface but several other interfaces are used as well. The main function: Func ShowFavoritesMenu( $hWnd, $hMenu, $xCoord, $yCoord ) ; --- Create a menu band object and the IShellMenu interface --- Local $oIShellMenu, $pIShellMenu ; Create a menu band object and get a pointer to the IShellMenu interface CoCreateInstance( $tCLSID_MenuBand, $NULL, $CLSCTX_INPROC_SERVER, $tRIID_IShellMenu, $pIShellMenu ) $oIShellMenu = ObjCreateInterface( $pIShellMenu, $sIID_IShellMenu, $dtag_IShellMenu ) If Not IsObj( $oIShellMenu ) Then Return SetError(1,0,0) ; --- Initialize the interface --- If $oIShellMenu.Initialize( $NULL, -1, $ANCESTORDEFAULT, BitOR( $SMINIT_TOPLEVEL, $SMINIT_VERTICAL ) ) <> $S_OK Then Return SetError(2,0,0) ; --- Specify the folder for the menu band to browse --- ; Get a pointer to the IShellFolder interface for the desktop Local $pIShellFolder = $NULL, $oIShellFolderDesktop, $pIShellFolderDesktop, $pidlRel SHGetDesktopFolder( $pIShellFolderDesktop ) SHGetSpecialFolderLocation( $NULL, $CSIDL_FAVORITES, $pidlRel ) $oIShellFolderDesktop = ObjCreateInterface( $pIShellFolderDesktop, $sIID_IShellFolder, $dtag_IShellFolder ) $oIShellFolderDesktop.BindToObject( $pidlRel, $NULL, $tRIID_IShellFolder, $pIShellFolder ) If $pIShellFolder = $NULL Then Return SetError(3,0,0) ; Get the registry key with the "Order" value of the Favorites folder Local $hRegOrder = _WinAPI_RegOpenKey( $HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Favorites", $KEY_READ ) If $hRegOrder = 0 Then Return SetError(4,0,0) ; Specify the folder for the menu band to browse If $oIShellMenu.SetShellFolder( $pIShellFolder, $pidlRel, $hRegOrder, BitOR( $SMSET_BOTTOM, $SMSET_USEBKICONEXTRACTION ) ) <> $S_OK Then Return SetError(5,0,0) _WinAPI_CoTaskMemFree( $pidlRel ) _WinAPI_RegCloseKey( $hRegOrder ) ; --- Append a static menu to the menu band --- If $oIShellMenu.SetMenu( $hMenu, $hWnd, $SMSET_TOP ) <> $S_OK Then Return SetError(6,0,0) ; --- Get access to IMenuPopup, IDeskBar and IDeskBand interfaces --- Local $pIMenuPopup, $pIDeskBar, $pIDeskBand ; The IMenuPopup interface If $pIShellMenu Then If $oIShellMenu.QueryInterface( $tRIID_IMenuPopup, $pIMenuPopup ) <> $S_OK Then Return SetError(7,0,0) EndIf ; The IDeskBar interface If $pIMenuPopup Then Local $oIMenuPopup = ObjCreateInterface( $pIMenuPopup, $sIID_IMenuPopup, $dtag_IMenuPopup ) If $oIMenuPopup.QueryInterface( $tRIID_IDeskBar, $pIDeskBar ) <> $S_OK Then Return SetError(8,0,0) EndIf ; The IDeskBand interface If $pIDeskBar Then Local $oIDeskBar = ObjCreateInterface( $pIDeskBar, $sIID_IDeskBar, $dtag_IDeskBar ) If $oIDeskBar.QueryInterface( $tRIID_IDeskBand, $pIDeskBand ) <> $S_OK Then Return SetError(9,0,0) EndIf ; --- Create a menu desk bar object and the IMenuPopup interface --- Local $oIUnknown, $pIUnknown, $oIMenuPopup, $pIMenuPopup ; Create a menu desk bar object and get a pointer to the IUnknown interface CoCreateInstance( $tCLSID_MenuDeskBar, $NULL, $CLSCTX_INPROC_SERVER, $tRIID_IUnknown, $pIUnknown ) $oIUnknown = ObjCreateInterface( $pIUnknown, $sIID_IUnknown, $dtag_IUnknown ) ; Create the IMenuPopup interface $oIUnknown.QueryInterface( $tRIID_IMenuPopup, $pIMenuPopup ) $oIMenuPopup = ObjCreateInterface( $pIMenuPopup, $sIID_IMenuPopup, $dtag_IMenuPopup ) If Not IsObj( $oIMenuPopup ) Then Return SetError(10,0,0) ; --- Create a menu band site object and the IBandSite interface --- Local $oIBandSite, $pIBandSite ; Create a menu band site object and get a pointer to the IBandSite interface CoCreateInstance( $tCLSID_MenuBandSite, $NULL, $CLSCTX_INPROC_SERVER, $tRIID_IBandSite, $pIBandSite ) $oIBandSite = ObjCreateInterface( $pIBandSite, $sIID_IBandSite, $dtag_IBandSite ) If Not IsObj( $oIBandSite ) Then Return SetError(11,0,0) ; --- Set the band site object as client for the desk bar object --- If $oIMenuPopup.SetClient( $pIBandSite ) <> $S_OK Then Return SetError(12,0,0) ; --- Add the desk band object to the band site object --- If $oIBandSite.AddBand( $pIDeskBand ) <> $S_OK Then Return SetError(13,0,0) ; --- Show the Favorites menu --- Local $tPOINT = DllStructCreate( $tagPOINT ) DllStructSetData( $tPOINT, "X", $xCoord ) DllStructSetData( $tPOINT, "Y", $yCoord ) Local $tRECT = DllStructCreate( $tagRECT ) DllStructSetData( $tRECT, "Left", $xCoord ) DllStructSetData( $tRECT, "Top", $yCoord+1 ) DllStructSetData( $tRECT, "Right", $xCoord ) DllStructSetData( $tRECT, "Bottom", $yCoord+1 ) $oIMenuPopup.Popup( $tPOINT, $tRECT, $MPPF_ALIGN_RIGHT ) ; --- Create the IMenuBand interface --- Local $oIDeskBand $oIDeskBand = ObjCreateInterface( $pIDeskBand, $sIID_IDeskBand, $dtag_IDeskBand ) $oIDeskBand.QueryInterface( $tRIID_IMenuBand, $pIMenuBand ) $oIMenuBand = ObjCreateInterface( $pIMenuBand, $sIID_IMenuBand, $dtag_IMenuBand ) If Not IsObj( $oIMenuBand ) Then Return SetError(14,0,0) ; $oIMenuBand and $pIMenuBand are global variables ; $oIMenuBand is used to handle the messages from the Favorites menu in the function below ; $pIMenuBand is used to test if the Favorites menu is open ($pIMenuBand <> $NULL) Return 0 EndFunc Example The zip contains the example as you can see in the picture. There are two versions of the example: A version based on a toolbar (ExShellFavsProgsMenus.au3), and a version based on a menu bar (ExShellFavsProgsMenus2.au3). The purpose of the text box is just to have something to put in the window. The zip contains also the ShellFavsProgsMenus.au3 UDF. This zip contains the original scripts for 3.3.8. You need APIConstants.au3 and WinAPIEx.au3 by Yashied. The UDFs are not included in the zip. The zip can be opened with 7-Zip. ShellFavsProgsMenus.zip This zip contains the updated scripts for 3.3.10. Only a matter of UDFs. These scripts will not run under 3.3.8. TheFavoritesMenu.7z Testet on XP 32 bit and Win 7 32/64 bit.
  11. Hi all ! I'm looking for arrow icons in the Windows Explorer : (The 2 similar ones in this pic) I think they're in a system DLL... but which one ? (Not in shell32, nor in user32) Any help appreciated !
  12. I started this a couple of months ago and figured that maybe others would like to contribute or just criticize whatever does it for you. I'm having to start from scratch and re-research everything but if someone has some code to contribute or ideas please share them. Everyone else start coding like freaking crazy. For those lost on the subject please lookup emerge desktop as some of it may be incorporated into this version. It won't be if I can help it though. To get some conversation started what features are the most desired? Should (AutoIt Desktop Shell) be the name? Ideas? Registering the shell is simple enough - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell I will be needing to touch on some sensitive subjects. How can we intercept the same hotkeys as explorer for the start menu and etc... If this is unacceptable then mods please due inform me. I'm not asking now, just speculating on this project's development.
  13. Hey everyone, I was wondering if there was a way to use ConsoleWrite() to execute a command? I am looking to execute a command from an AutoIt program (a console app in this case), within the same shell as said AutoIT program was launched. ConsoleWrite() seemed to be the closest command available, as it writes directly to the StdOut stream. Perhaps there is an other command that I am ignorant of however, such as a way to use Run() to write to the same stream as ConsoleWrite()? As always, any help is much appreciated!
  14. _ShellExecuteWithReducedPrivileges An odd thing about Vista+ O/S's is that, once you run a process in elevated privileges mode, you can't run other processes in lower-privileged modes. Why, you ask, would that be important? Sometimes you want - or need - to limit the privileges of a process: A very common scenario for me is drag-and-drop. Windows' Explorer does NOT allow this to occur between lower privileged processes (like Explorer itself!) and other processes. This is very frustrating for users in programs that take advantage of that. There's also some problems using certain SendMessage commands from other unelevated processes.Setting the state or properties of windows that have an elevated privilege may not work either from other unelevated processes.An install or setup program that needs to launch the installed program will more often than not want to run that program on a lower privilege level (for some of the reasons mentioned above)So, after some looking around I found two ways of running processes under a lower privilege mode. One is using CreateProcessWithTokenW (see ), and the other is using COM objects - specifically Windows Explorer's SHELL object to ShellExecute a command/program. This can be used just like AutoIt's built-in ShellExecute() function, but of course the program that runs will be at a reduced IL (integrity level). The code is based on Brandon @ BrandonLive's article here: 'Getting the shell to run an application for you - Part 2:How | BrandonLive' The usage is straightforward for this one: use it like ShellExecute. The $bWait parameter is only there in case ShellExecuteWait() will be called for either non-elevated processes or pre-Vista O/S's. Example: _ShellExecuteWithReducedPrivileges(@ComSpec,' /k title Non-Elevated prompt (via Shell.ShellExecute)') Anyway, hope this helps someone out! Ascend4nt's AutoIT Code License agreement: While I provide this source code freely, if you do use the code in your projects, all I ask is that: If you provide source, keep the header as I have put it, OR, if you expand it, then at least acknowledge me as the original author, and any other authors I creditIf the program is released, acknowledge me in your credits (it doesn't have to state which functions came from me, though again if the source is provided - see #1)The source on it's own (as opposed to part of a project) can not be posted unless a link to the page(s) where the code were retrieved from is provided and a message stating that the latest updates will be available on the page(s) linked to.Pieces of the code can however be discussed on the threads where Ascend4nt has posted the code without worrying about further linking.Download the ZIP from my Site
  • Create New...