僅需在使用MsgBox()時,在uType參數要下MB_SERVICE_NOTIFICATION。
同時在hWnd部分,一定要給NULL。
目前並沒有做很多測試,所以限制部分,稍後補上。
目前可以確認的是,僅有Windows XP可以達到此效果。
Showing posts with label Win. Show all posts
Showing posts with label Win. Show all posts
[Win]Service存取網路磁碟
目前測試在要進行存取時,先呼叫LogonUser()
之後就可以用所輸入的使用者帳號來存取網路磁碟了。
存取完後需使用CloseHandle()來關閉Token並釋放記憶體即可。
dwLogonType設成 LOGON32_LOGON_INTERACTIVE或是LOGON32_LOGON_NEW_CREDENTIALS則都可以。
只是網路磁碟的路徑要使用UNC路徑才行,不然還是一樣會找不到路徑。
mapping過的路徑目前測試結果是service是一定讀不到檔案,原因則目前不明。
如有需讀取mapping路徑內之資料,請參考[Win]Mapping Disk的紀錄位置
PS.如有需要讓呼叫的執行檔也有同樣的權時,dwLogonType需設成LOGON32_LOGON_INTERACTIVE;dwLogonProvider則要設為LOGON32_PROVIDER_DEFAULT。
之後再使用 CreateProcessAsUser()來執行執行檔即可。需傳入的Token則為先前使用LogonUser()所取得的token。
之後就可以用所輸入的使用者帳號來存取網路磁碟了。
存取完後需使用CloseHandle()來關閉Token並釋放記憶體即可。
dwLogonType設成 LOGON32_LOGON_INTERACTIVE或是LOGON32_LOGON_NEW_CREDENTIALS則都可以。
只是網路磁碟的路徑要使用UNC路徑才行,不然還是一樣會找不到路徑。
mapping過的路徑目前測試結果是service是一定讀不到檔案,原因則目前不明。
如有需讀取mapping路徑內之資料,請參考[Win]Mapping Disk的紀錄位置
PS.如有需要讓呼叫的執行檔也有同樣的權時,dwLogonType需設成LOGON32_LOGON_INTERACTIVE;dwLogonProvider則要設為LOGON32_PROVIDER_DEFAULT。
之後再使用 CreateProcessAsUser()來執行執行檔即可。需傳入的Token則為先前使用LogonUser()所取得的token。
[Reg]登入後自動啟動程式
將需執行的程式之路徑寫到下列Registry Key底下即可
Current User:
\\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Local Machine:
\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
一樣可以加入command line來使用。
KeyValue的Type為String,KeyValue名稱可自定
已知所支援之平台:
XP、Vista、Server2008
Current User:
\\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Local Machine:
\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
一樣可以加入command line來使用。
KeyValue的Type為String,KeyValue名稱可自定
已知所支援之平台:
XP、Vista、Server2008
[Win]Mapping Disk的紀錄位置
XP、Server2008、Vista、Win7:
Key:HKEY_CURRENT_USER\Network
ValueType:String
ValueName:Remote Path
Key:HKEY_CURRENT_USER\Network
ValueType:String
ValueName:Remote Path
[Win]在SystemTray Icon上跳出Pop-up Menu
一開始先加入Menu的resource,然後輸入所要顯示的項目。
之後將對應的ID加入到MessageMap裡面去,並且也需要建立對應的操作行為。
這邊所需要用到的Function為ON_COMMAND()
例如:
Message Map
之後再宣告CMenu物件來使用。宣告位置在function或是header內都可以。
之後需要彈出menu時,僅需做下列步驟:
Maximum function
In Head file
In Cpp
不過目前跳出來的Pop-up menu在focus離開後並不會自行消失,且無法使用HotKey,所以這邊之後有時間再補上。
2009/12/08 - 註記
Pop-up menu不會消失的問題,只需在顯示pop-up menu之前多加個main form的SetForegroundWindow()就可以解決了。
之後將對應的ID加入到MessageMap裡面去,並且也需要建立對應的操作行為。
這邊所需要用到的Function為ON_COMMAND()
例如:
Message Map
BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
ON_COMMAND(ID_TRAYMENU_MAXIMIZE, OnTraymenuMax)
ON_COMMAND(ID_TRAYMENU_MINIMIZE, OnTraymenuMin)
ON_COMMAND(ID_TRAYMENU_CLOSE, OnTraymenuClose)
ON_COMMAND(ID_TRAYMENU_SHOWBALLOON, &CMDXMainDlg::OnTraymenuShowballoon)
END_MESSAGE_MAP()
之後再宣告CMenu物件來使用。宣告位置在function或是header內都可以。
之後需要彈出menu時,僅需做下列步驟:
this->m_pRClkMenu->LoadMenu(nMenuID);
this->m_pRClkMenu->GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, rect.left, rect.top, this, &rect);
this->m_pRClkMenu->Detach(); //這行也會讓menu消失
Maximum function
In Head file
afx_msg void OnTraymenuMax();
In Cpp
void CMainDlg::OnTraymenuMax()
{
this->ShowMainForm();
}
不過目前跳出來的Pop-up menu在focus離開後並不會自行消失,且無法使用HotKey,所以這邊之後有時間再補上。
2009/12/08 - 註記
Pop-up menu不會消失的問題,只需在顯示pop-up menu之前多加個main form的SetForegroundWindow()就可以解決了。
Subscribe to:
Posts (Atom)
Build docker image from multiple build contexts
Build docker image from multiple build contexts ...
-
參考資料: Input Input Manager 測試手把 :PS Analog gamepad Script語言:C# Unity 版本:3.4 Unity提供了3種輸入裝置可以使用,鍵盤、滑鼠、以及遊戲手把。 ...
-
寫法很簡單,就像下列寫法: if ( *szStr ) { .... } 因為*szStr == szStr[0],且char[]是以NULL-Terminate來判定字串是否結束,所以只要判定陣列的第一個值是不是為零,就可知道是否為空字串。 如需檢查是否為空字...