c# 開機自啟動,這個功能是大多數服務型軟體很常用乙個功能,但是這個功能確是不
太好做,花了兩天想對策。不過最終呢,結果還是很滿意的。
這個功能要達到的效果是這樣的,所有使用者開機自啟動。
最初在網上找的資料都是修改登錄檔,基本上都是行如這樣的:
//獲取程式執行路徑..
//class micosoft.win32.registrykey. 表示window登錄檔中項級節點,此類是登錄檔裝.
registrykey loca = registry.localmachine;
registrykey run = loca.createsubkey(@"software\microsoft\windows\currentversion\run");
trycatch (exception ee)
結果我嘗試的時候,發現根本就不行,在setvalue這塊就出錯了,報錯的message 是無訪問許可權,真的是折騰了很久,整uac 許可權之類的,最後還是放棄了,這種寫法在xp 上還是可以成功的,因為xp 沒有uac許可權的說法,而win7 這個許可權砍繞不過去。
嘗試第二種方法,通過註冊服務,讓服務啟動介面程式,這種方式貌似是可以的,只不過我沒有嘗試成功。有興趣的可以繼續試試。
嘗試第三種方法,就是將啟動的介面程式快捷方式拷貝到啟動目錄下,這種方式確實可以達到效果,但是當時考慮到會不會只對當前使用者有效,然後測試了下用另一賬戶登入,果然不行,這個時候,居然發現win7 下居然有乙個所有使用者的啟動目錄,哎只怪自己太年輕了。我把快捷方式放置在該目錄下,居然正常執行。示例**如下:
try當然這種方式還是有點簡單粗暴,比如有的使用者想開機啟動,有的使用者又不想開機啟動,那怎麼辦,其實這種我們可以通過配置檔案和邏輯判斷肯定是可以實現的。else
}catch(exception ex)
這個我們要達到的效果是,啟動時隱藏,雙擊托盤顯示。
第一步:首先我們要建立乙個空的winform 窗體。
第二步:向窗體拖動notifyicon 和 contextmeaustrip 控制項
第三步:最重要的一步,就是在notifyicon 屬性中選擇該contextmeaustrip 控制項,要不然右鍵notifyicon是出不來 選單的。並且設定icon 圖示
第四步:給contextmeaustrip 增加退出選單,並且增加響應函式
private void 退出toolstripmenuitem_click(object sender, eventargs e)第五步:讓窗體初始化的時候隱藏
private第六步:給notifyicon 增加雙擊事件void form1_load(object
sender, eventargs e)
private
void form1_resize(object
sender, eventargs e)
}
private第七步:這是會看到圖示在工作列還存在,設定showintaskbar 屬性為false.void notifyicon1_mousedoubleclick(object
sender, mouseeventargs e)
第八步:大功告成。
**位址
C 最小化到托盤
define wm showtask wm user 1 void ctestdlg onsyscommand uint nid,lparam lparam else cdialog onsyscommand nid,lparam begin message map ctestdlg,cdialog...
c 最小化到托盤
剛在寫個程式,遇到個小問題,就是當點選最小化按鈕時,如何把程式最小化到系統托盤裡去。其實這樣的例子在很多軟體上面都可以見到的,但剛開始找屬性時並沒有任何和系統托盤有關的,找了一下事件,也沒有發現有關最小化按鈕點選的事件。鬱悶中,於是上網搜尋了一下,才發現原來有個叫notifyicon的控制項 汗乙個...
C 最小化到托盤 雙擊托盤恢復
1.新增notifyicon控制項,並新增icon,否則托盤沒有圖示 托盤右鍵選單也可直接在屬性裡新增 2.響應form的resize或sizechanged訊息 hide to system tray private void form1 resize object sender,eventarg...