【问题标题】:C# - Detect if application has been launched by another programC# - 检测应用程序是否已由另一个程序启动
【发布时间】:2017-01-02 19:15:29
【问题描述】:

我为我的游戏制作了一个启动器,启动器会自动下载和修补游戏。 但是,我如何检查游戏是否已被启动器启动?有没有不使用命令行参数的方法?

【问题讨论】:

  • 你可以让launcher添加一些日志,然后在游戏启动时查看日志文件
  • 有趣的问题。当然有可能,但我认为这可能是特定于平台的。
  • 好吧,如果你不只是调用“mygame.exe”,你可以使用 .net 使用 exe,并让主程序执行“不要直接打电话给我”,然后使用来自的类等里面有……也许吧。

标签: c# startup detect


【解决方案1】:

如果您的启动器是 .net 应用程序,您可以不从命令行启动您的应用程序,而是通过调用 Main() 函数(从导出的类)。

如果您的启动器不是.net应用程序并且您的应用程序只能在Windows上运行,那么您可以尝试从主应用程序中找到启动器的窗口(使用FindWindow函数),使用SendMessageWinApi函数发送消息,并检查结果.

这些文章可能有用:

  1. Importing .net classes
  2. Finding windows
  3. Sending messages
  4. Importing dll functions

【讨论】:

  • 好的,但是如果别人反编译了我的启动器,他可以自己制作,游戏就可以正常启动了吗?以及如何通过调用 Main() 方法开始游戏? (我的游戏是用 Unity 制作的)
  • @Unity-ThiagoSouza 为防止有人制作新的启动器,您应该使用混淆。要从您的启动器运行 Main() 方法,您应该添加对统一制作的 Game.exeGame.dll 的添加引用。之后,您可以创建您的类的对象(如MyGameNamespace.MyGameClass)(如果它不是静态的)并运行Main() 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2010-10-15
  • 2018-03-04
  • 1970-01-01
  • 2011-03-12
相关资源
最近更新 更多