發表文章

目前顯示的是 6月, 2020的文章

用C#建立電腦保護螢幕程式

自己嘗試著做一下電腦保護螢幕的程式。相信大家google找一下這個主題,應該也可以找到一些資料。 建好的exe檔請把exe附檔名改為scr檔。拷貝到目錄C:\Windows\System32下。 我們在設定保護螢幕時,有選取,設定,預覽等項目。試了一下,大約如下: 選取該項目:兩個參數。第一個: "/p", 第二個應該是handle之類的。程式中可以不處理。 設置按鈕:一個參數。字串為"/c:"+handle數字。設置完後,會再一次a.項中的選取該項目的參數,也就是該保護螢幕程式會執行兩次。 預覽按鈕:一個參數。字串為"/s"。 真實執行螢幕保護程式:與預覽按鈕相同。 在你的螢幕保護程式對應2.中的參數。實作在Program.cs內。大約如下: static void Main(string[] args) { if (args != null) { if (args.Length < 1) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new mainForm()); } else if (args[0].Substring(0, 2).Equals("/c")) { Application.Run(new SetItUp()); //設定卷軸速度表格 } else if (args[0].Substring(0, 2).Equals("/s")) { Application.Enab

Windows登錄檔C#程式編輯

Windows有提供Registry登錄檔以供系統或是程式使用。可以參考維基百科 登錄檔 。 使用類別: RegistryKey 命名空間: Microsoft.Win32 我們先看一下設定值的寫法 private void SetRegeditData(string name, string tovalue, RegistryValueKind regKind){ RegistryKey hklm = Registry.CurrentUser; RegistryKey software = hklm.OpenSubKey("Software", true); RegistryKey aimdir = software.CreateSubKey("DearJames"); aimdir.SetValue(name, tovalue, regKind); } 設定值本來存在的就覆蓋,本來沒有的就新建。 但是讀取值就不一樣了! 個人寫的function如下: private string GetRegeditData(string name) { string registData; RegistryKey hkml = Registry.CurrentUser; RegistryKey software = hkml.OpenSubKey("Software", true); RegistryKey aimdir = software.OpenSubKey("DearJames", true); if(aimdir==null) { software.CreateSubKey("DearJames"); aimdir = software.OpenSubKey("DearJames", true); } registData =

C# picturebox的Image 取得網路攝像頭圖像資料

版权声明:本文为CSDN博主「吕家少爷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_43240642/java/article/details/101430811 PS. CSDN的作者也是我本人!  有個項目使用了攝影機,其為網路線傳輸資料的。內附的DLL是靠 Function: MVImageDrawHwnd(…) 〈-- 用Handle接受資料 Function: MVImageDraw(…) 〈-- 用hdc接受資料 原本使用了第一個Function, 把picturebox的Handle傳過去,MVImageDrawHwnd(hCameraImage, picturebox1.Handle,…) 結果Picturebox1裡面可以看到了影像。以單張的為例,Picturebox的卷軸一卷就不見了。檢查了picturebox1.Image內,發現是null。可是這圖像不是眼睛看到就好,我是要處理的。網站搜尋了一下,都沒有找到解決方法。拉里拉雜的話不談。直接把我解決的方式如下說了!我是使用了第二的Function實踐之!其實也該感謝搜尋的網站內容,很有啟發性! 在抓到摄影機的解析度时,先設定global Bitmap變數的大小: GrabImageData = new Bitmap(w, h); 在攝影機獲取圖像的函式內使用如下的程序: picGrab.Image = GrabImageData; //指定picGrab之Image為GrabImageData(Bitmap型態) Graphics g = Graphics.FromImage(picGrab.Image); //產生Graphics在picGrab上 IntPtr pptt2 = g.GetHdc(); //取得g之hdc MVAPI.MVImage.MVImageDraw(m_hImage, pptt2, 0, 0); //將取得相機之影像傳到建立在picGrab上之Bitmap,其連接在GrabImageData g.ReleaseHdc(); //Release HDC g.Dispose(); //釋放g 資源 在前項所列的g.Relea