最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#監(jiān)聽txt文檔獲取新數(shù)據(jù)方式

 更新時間:2025年07月23日 14:24:05   作者:老農(nóng)民編程  
文章介紹通過監(jiān)聽txt文件獲取最新數(shù)據(jù),并實現(xiàn)開機自啟動、禁用窗口關(guān)閉按鈕、阻止Ctrl+C中斷及防止程序退出等功能,代碼整合于主函數(shù)中,供參考學習

前言

之前有個需求就是監(jiān)聽文件夾中最新的txt文檔獲取最新數(shù)據(jù),還有其他功能,

比如:開機自啟動、只在任務(wù)管理器關(guān)閉、阻止Ctrl+C中斷等,對此作個記錄,整理代碼。

一、監(jiān)聽txt文檔增加數(shù)據(jù)

代碼如下:

static void RunMainLogic()
{
	//1. 獲取程序基目錄
	string baseDir = AppDomain.CurrentDomain.BaseDirectory;

	//2.拼接相對路徑(目標路徑 - 文件夾)并轉(zhuǎn)換為絕對路徑
	string relativePath = @"..\..\..\..\TotalTest\Debug";
	string targetDir = Path.GetFullPath(Path.Combine(baseDir, relativePath));

	//3.檢查目標目錄是否存在
	if (!Directory.Exists(targetDir))
	{
    	Console.WriteLine("目標目錄不存在:{" + targetDir + "}");
    	return;
	}

	//4.獲取所有名稱包含“Test”的子文件夾,并按時間排序
	var latsetTestDir = Directory.GetDirectories(targetDir, "*Test*", SearchOption.TopDirectoryOnly)
    	.Select(dir => new DirectoryInfo(dir))
    	.OrderByDescending(dir => dir.LastWriteTime)
    	.FirstOrDefault();

	if (latsetTestDir == null)
	{
    	Console.WriteLine("Test文件夾路徑不存在!");
    	return;
	}

	string folderPath = latsetTestDir.FullName;

	string str = "開始監(jiān)控文件夾: {" + folderPath + "}";
	Console.WriteLine(str);

	//txt文檔監(jiān)聽
	TextFileWatcher watcher = new TextFileWatcher(folderPath); //先被執(zhí)行
	watcher.DataReceived += OnDataReceived; //訂閱事件
	watcher.SetNewestFileAsTarget();

}

//訂閱事件
static void OnDataReceived(object sender, string data)
{
	string StrLine = data; //需要的數(shù)據(jù)
}

二、其他功能

1. 設(shè)置開機自啟動

代碼如下:

static void SetAutoStart(string appName, string appPath)
{
    RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
    key.SetValue(appName, appPath);
    key.Close();
}

作用:將程序添加到注冊表啟動項,實現(xiàn)開機自動運行。

調(diào)用方式

SetAutoStart("MyConsoleApp", System.Reflection.Assembly.GetExecutingAssembly().Location);

2. 禁止控制臺窗口關(guān)閉按鈕

代碼如下:

[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

[DllImport("user32.dll")]
private static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);

private const uint SC_CLOSE = 0xF060;
private const uint MF_GRAYED = 0x00000001;

static void DisableCloseButton()
{
    IntPtr hWnd = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
    IntPtr hMenu = GetSystemMenu(hWnd, false);
    EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED);
}

作用:禁用窗口的x關(guān)閉按鈕,用戶無法直接關(guān)閉程序。

3. 阻止Ctrl + C中斷

代碼如下:

Console.CancelKeyPress += (sender, e) => e.Cancel = true;

作用:防止用戶按 Ctrl + C 終止程序。

4. 防止程序退出(無限循環(huán))

代碼如下:

while(true)
{
	Thread.Sleep(1000); //防止CPU占用過高
}

作用:讓程序無限運行,除非任務(wù)管理器終止程序報錯。

總結(jié)

如將開機自啟動只能在任務(wù)管理器關(guān)閉放到監(jiān)聽txt文檔功能。

在主函數(shù)中,代碼如下:

//1. 設(shè)置開機自啟動
SetAutoStart("ConsoleApplication1", System.Reflection.Assembly.GetExecutingAssembly().Location);

//2. 禁用關(guān)閉按鈕
DisableCloseButton();

//3. 阻止Ctrl+C 關(guān)閉
Console.CancelKeyPress += (sender, e) =>
{
    e.Cancel = true; // 阻止默認行為
    Console.WriteLine("Ctrl+C 被禁用,無法關(guān)閉程序。");
};

//4. 主要業(yè)務(wù)邏輯
RunMainLogic();

//5. 防止程序退出(無限循環(huán))
while (true)
{
    Thread.Sleep(1000); // 每秒鐘檢查一次(防止 CPU 占用過高)
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#之泛型詳解

    C#之泛型詳解

    本文詳細講解了C#中的泛型,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#實現(xiàn)系統(tǒng)托盤通知的方法

    C#實現(xiàn)系統(tǒng)托盤通知的方法

    這篇文章主要介紹了C#實現(xiàn)系統(tǒng)托盤通知的方法,涉及C#系統(tǒng)api調(diào)用的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • c#禁止通過拖動,雙擊標題欄改變窗體大小的方法

    c#禁止通過拖動,雙擊標題欄改變窗體大小的方法

    今天小編就為大家分享一篇c#禁止通過拖動,雙擊標題欄改變窗體大小的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Unity3D應(yīng)用之時鐘與鐘表小組件的使用教程

    Unity3D應(yīng)用之時鐘與鐘表小組件的使用教程

    這篇文章主要來和大家詳細介紹一下Unity3D應(yīng)用開發(fā)中的時鐘和鐘表小組件的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-01-01
  • C# 中如何利用lambda實現(xiàn)委托事件的掛接

    C# 中如何利用lambda實現(xiàn)委托事件的掛接

    在寫一個小程序的時候,碰到了這樣的問題,需要用委托來掛接事件,但是又想在這事件中使用局部的變量,而委托一旦定義好后,掛接方就沒有辦法再添加額外的形參了。那有沒有什么辦法,可以實現(xiàn)呢
    2013-07-07
  • c#對list排序示例

    c#對list排序示例

    本文主要介紹了c#對List成員排序的示例,大家參考使用吧
    2014-01-01
  • C#中時間的幾種格式轉(zhuǎn)換方法

    C#中時間的幾種格式轉(zhuǎn)換方法

    有時候我們要對C#時間進行轉(zhuǎn)換,達到不同的顯示效果,這里簡單介紹下,方便需要的朋友
    2013-09-09
  • C#?執(zhí)行Javascript腳本的方法步驟

    C#?執(zhí)行Javascript腳本的方法步驟

    本文主要介紹了C#?執(zhí)行Javascript腳本的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 使用C#代碼將RTF轉(zhuǎn)換為HTML或圖像

    使用C#代碼將RTF轉(zhuǎn)換為HTML或圖像

    本文介紹了使用Spire.Docfor.NET在C#中將RTF文件轉(zhuǎn)換為HTML或圖像的方法,并提供了具體步驟和示例代碼,以便更好地進行共享和歸檔,需要的朋友可以參考下
    2026-04-04
  • C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移

    C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移

    EF 中 Code First 的數(shù)據(jù)遷移網(wǎng)上有很多資料,我這份并沒什么特別。Code First 創(chuàng)建視圖網(wǎng)上也有很多資料,但好像很麻煩,而且親測好像是無效的方法(可能是我太笨,沒搞成功),我摸索出了一種簡單有效的方法,這里分享給大家
    2021-09-09

最新評論

界首市| 衡阳县| 江孜县| 临颍县| 婺源县| 肇东市| 阳泉市| 恩平市| 金门县| 五大连池市| 阜新| 杭州市| 获嘉县| 余姚市| 屯留县| 太谷县| 嘉峪关市| 株洲市| 临湘市| 安图县| 清原| 常州市| 长岭县| 聊城市| 泰顺县| 灵宝市| 九龙坡区| 荔波县| 凌云县| 通渭县| 托里县| 华阴市| 论坛| 称多县| 临沧市| 本溪| 隆子县| 景泰县| 镶黄旗| 天镇县| 黄平县|