我想知道是否有可能在程序第一次啓動時調用事件或方法,顯然是第一次。這可能在C#中完成嗎?如果可以的話,可以有人展示一些如何實現的例子如何在首次啓動C#程序時運行方法或事件?
回答
你可以通過指定一些鎖定文件的DelayUntilReboot
標誌使用MoveFileEx本地方法:
class Program
{
[Flags]
enum MoveFileFlags
{
None = 0,
ReplaceExisting = 1,
CopyAllowed = 2,
DelayUntilReboot = 4,
WriteThrough = 8,
CreateHardlink = 16,
FailIfNotTrackable = 32,
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern bool MoveFileEx(
string lpExistingFileName,
string lpNewFileName,
MoveFileFlags dwFlags
);
static void Main()
{
string lockFile = "foo.dat";
if (!File.Exists(lockFile))
{
// that's a first run after the reboot => create the file
File.WriteAllText(lockFile, "");
// Mark the file for deletion after reboot
MoveFileEx(lockFile, null, MoveFileFlags.DelayUntilReboot);
Console.WriteLine("it's a first run");
}
else
{
// that's a consecutive run
Console.WriteLine("it's a consecutive run");
}
}
}
嗨,這適用於控制檯應用程序,但我怎麼能在Windows窗體應用程序中使用它? – Dennis 2011-06-15 20:30:08
@Dennis,在WinForms應用程序中,你仍然有一個Program.cs啓動器和一個'Main'方法,不是嗎?因此,在創建主窗體之前,只需將此代碼放在那裏。或者你也可以把它放在主窗體的構造函數中,但這會很浪費,因爲如果應用程序不能運行,你可能不需要等太多的東西來終止它。 – 2011-06-15 20:31:47
啊,我明白了,好吧,我設法讓它在GUI應用程序(幾乎!)中工作,但我得到這個錯誤:名稱'MoveFileEx'在當前上下文中不存在。我缺少哪個命名空間? – Dennis 2011-06-15 20:34:44
- 1. 如何配置C#程序在首次啓動操作系統時運行?
- 2. 如何在首次啓動應用程序時訪問任何方法
- 3. 如何在應用程序啓動時運行一次?
- 4. 如何在首次啓動應用程序時顯示UIViewController?
- 5. 在啓動/啓動時自動啓動應用程序的首選方法?
- 6. 在首次啓動時執行應用程序指令
- 7. 如何在首次啓動應用程序時顯示UIAlertView(或UIView)?
- 8. 如何在wxpython啓動GUI程序後立即運行事件?
- 9. 啓動時運行c程序
- 10. Spring首次或Spring啓動
- 11. 如何在Android應用程序首次啓動時下載本地化文件
- 12. 應用程序運行時首次運行活動正在顯示
- 13. 如何僅在首次啓動時使用啓動畫面?
- 14. 在屏幕啓動時運行方法
- 15. Netbeans CUnit每次啓動應用程序時運行一次
- 16. 如何使活動成爲首次啓動的活動,但僅限於第一次運行的應用程序
- 17. 在啓動時運行程序
- 18. 運行程序在Windows啓動時
- 19. 在啓動時運行應用程序
- 20. MyApplication.java沒有在第二次啓動應用程序時運行?
- 21. 如何在系統啓動時自動運行應用程序?
- 22. 如何在glassfish服務器啓動時自動運行程序?
- 23. 如何在應用程序運行時啓動進程?
- 24. 如何在首次啓動時僅顯示一次UIPageViewController
- 25. 在啓動時運行C#程序時服務未啓動異常
- 26. 只有在應用程序首次在Android中運行時才使用共享首選項來調用方法?
- 27. 如何僅在首次啓動應用程序時顯示消息?
- 28. 如何在首次啓動.NET Windows應用程序時創建Access數據庫?
- 29. 如果第二次啓動,C#程序只能運行一次+ BringToFront
- 30. 如何運行程序和啓動shell
你的意思是它運行在計算機上的第一次,但沒有後續執行? – Oded 2011-06-15 19:40:19
@Oded是這就是 – Dennis 2011-06-15 19:48:22
所以......基本上只有'一次性'運行?或者..它在計算機每次(重新)啓動後只能運行一次? – KriZ 2011-06-15 19:50:42