joedimagio Posted March 28, 2009 Share Posted March 28, 2009 Here is what I am trying to come up with An autoit exe running perpetually in the system tray which watches for an external GUI (non-Autoit). Once this GUI is opened, it adds a new menu item to the GUI menu. When the user clicks on the menu item, certain field values in the GUI are saved to a file. I am trying to simulate this using Notepad. So I would like to have a autiit exe perpetually running on the system tray waiting for a notepad.exe to open. Once available, it will create a menu item which when clicked on, will save the contents of the notepad to a file. I have figured out the adding menu part. I am not sure of the perpetual tray exe which watches for notepad and also on how to grab contents and save to a file. Any help will be appreciated. Thanks. Joe Link to comment Share on other sites More sharing options...
maqleod Posted March 28, 2009 Share Posted March 28, 2009 Here is what I am trying to come up withAn autoit exe running perpetually in the system tray which watches for an external GUI (non-Autoit). Once this GUI is opened, it adds a new menu item to the GUI menu. When the user clicks on the menu item, certain field values in the GUI are saved to a file.I am trying to simulate this using Notepad. So I would like to have a autiit exe perpetually running on the system tray waiting for a notepad.exe to open. Once available, it will create a menu item which when clicked on, will save the contents of the notepad to a file. I have figured out the adding menu part. I am not sure of the perpetual tray exe which watches for notepad and also on how to grab contents and save to a file.Any help will be appreciated. Thanks.Joelook in the help file at Tray Functions, you can also search for "minimize to tray" on the forums for some ideas on how it all works. ProcessExists() is a good way to check if a process is running, or WinExists() if you just want a window title checked. [u]You can download my projects at:[/u] Pulsar Software Link to comment Share on other sites More sharing options...
joedimagio Posted March 30, 2009 Author Share Posted March 30, 2009 look in the help file at Tray Functions, you can also search for "minimize to tray" on the forums for some ideas on how it all works. ProcessExists() is a good way to check if a process is running, or WinExists() if you just want a window title checked. Thanks for the pointers. Here is what I did expandcollapse popup#include <GuiMenu.au3> #include <WinAPI.au3> #include <anygui.au3> Local $hMainWnd, $hMainMenu, $msg Local $idNewItem do sleep(50) until WinExists("Untitled - Notepad") MsgBox(0, "", "Window exists") $hMainWnd = _GuiTarget("Untitled - Notepad", 1) $hMainMenu = _GUICtrlMenu_GetMenu($hMainWnd) ; Create New menu $hNewMenu = _GUICtrlMenu_CreateMenu () _GUICtrlMenu_InsertMenuItem ($hNewMenu, 0, "&New Item", $idNewItem) _GUICtrlMenu_InsertMenuItem ($hMainMenu, 5, "&New Menu", 0, $hNewMenu) GUISetState(@SW_SHOW) MsgBox(0, "", _GUICtrlMenu_GetItemSubMenu ($hMainMenu, 5)) MsgBox(0, "", _GUICtrlMenu_GetItemSubMenu ($hNewMenu, 0)) While WinExists($hMainWnd) $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case Not WinExists($hMainWnd) Exit Case $msg = $hNewMenu MsgBox(0,"","menu clicked") Case Else EndSelect Sleep(50) WEnd I am trying to find out when the new menu item is clicked, but the case statement for the new menu item does not fire. What am I doing wrong? Thanks for any help. Link to comment Share on other sites More sharing options...
Authenticity Posted March 30, 2009 Share Posted March 30, 2009 I think it requires to hook the WH_GETMESSAGE but you need to install it using a dll, or more correctly, the hook procedure must be in a dll library, otherwise it'll crush your windows. Note also that you may need to give the menu item ID value that you is unique so you won't handle other control ID messages. Link to comment Share on other sites More sharing options...
Reaper HGN Posted April 3, 2009 Share Posted April 3, 2009 Here is another approach. I use free antivirus, AntiVir from http://www.free-av.com/. I like it because it is low overhead and seems to be pretty quick. However, every day it updates and a big pop up window comes up advertising the product. Its not a big deal, but whenever that comes up I have to click the button. I wrote this little script to watch for the process that brings up that window and simply close it. I am using the adlib function.TraySetToolTip("No Antivir Notify by Reaper") AdlibEnable("noantivirnotify") While 1 Sleep(200) WEnd Exit Func noantivirnotify() If ProcessExists("avnotify.exe") Then ProcessClose("avnotify.exe") TrayTip("No Antivir Notify engaged","Process quieted.",4) EndIf EndFuncFor your purposes, you could watch for the process of the application ("notepad.exe" in your example) and when it shows up, take the desired action. Of course instead of killing it, you would probably focus on it and add the menu buttons, etc. Anyway, hope that gives you an idea. 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