好,截至目前,通過我這一點,我已經到了一個解決方案無數的帖子看,我不能做什麼,我需要從服務做的,我希望它成爲一種服務,以便它始終可用於計算機,但顯然隨着服務的編寫方式的不同,我可能無法運行我想運行的命令,因爲「該服務不在相同的空間中運行作爲用戶桌面「,所以它不會能夠捕獲桌面,至少,這就是即時收集到目前爲止。
至於現在,我會在這裏留下來,也許可以找到一種方法,在用戶名登錄時啓動一個程序來捕獲桌面,而不是直接從服務中嘗試。
我一直在牆上砸我的頭幾個小時,現在試圖弄清楚這一點,我從來沒有提供過服務,只是形成應用程序,以及我的下一個項目(客戶端服務器模型客戶端監控實用程序)需要作爲服務安裝在客戶機上並將數據發送回主服務器。
從未寫過服務,然後再查閱如何編寫一個以及如何安裝它以及如何安裝它。我把它一切工作正常,目前的工作版本每隔30秒吐出一次事件註銷以顯示其工作。
我開始在LocalSystem中運行它,因爲我認爲它具有寫入文件的權限,但在嘗試失敗之後,我嘗試了LocalService,但這也不起作用。
林指定目錄爲C:\ watcherdata \ test.jpg放在:\ WatcherData \ test.jpg放在
和以規則的形式應用(工作)
OutputImage.Save(「C測試它「,ImageFormat.Jpeg);
沒有例外,沒有事件,它只是沒有發生,但事件日誌消息放在它之前,所以它應該達到這一點,對吧?
任何援助,將不勝感激,如果你需要知道什麼我會很樂意效勞
編輯: 這裏去一些代碼:
private void ServiceWorkerThread(object state)
{
while (!this.stopping)
{
this.eventLog1.WriteEntry("This is a test2");
CallMe();
Thread.Sleep(30000);
}
this.stoppedEvent.Set();
}
private void CallMe()
{
try
{
int screenWidth = Screen.GetBounds(new Point(0, 0)).Width;
int screenHeight = Screen.GetBounds(new Point(0, 0)).Height;
Bitmap OutputImage = new Bitmap(screenWidth, screenHeight);
Graphics gfx = Graphics.FromImage((Image) OutputImage);
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
OutputImage.Save("c:\\watcherdata\\test.jpg", ImageFormat.Jpeg);
}
catch (Exception e)
{
this.eventLog1.WriteEntry(e.Message + "\r\n" + e.StackTrace, EventLogEntryType.Error);
}
}
大部分是從拍攝微軟示例文檔,就像我說的,我是新來的服務
目前仍在試圖搞清楚,就會讓你們知道,如果我得到任何地方
編輯2
在玩了一些之後,我設法讓它寫入文件,在意識到大部分問題出在我缺乏關於如何構建服務和安裝程序的知識之後,顯然我並沒有重建當我建立我的服務安裝程序。
現在它只是寫入所有黑色,一個大的黑色圖片。但至少它的寫作!
一些代碼可能會幫助你得到答案。因爲,我們沒有太多的事情要繼續下去。 – vossad01 2013-02-09 00:40:49
您是否嘗試在try/catch中包裝outputimage,並將異常寫入catch中的事件日誌? – AaronLS 2013-02-09 00:44:35
是的,我嘗試過(不得不輸入幾個字符來說yes> _>) – RyanTimmons91 2013-02-09 00:53:41