截至目前,我正在通过WinForms开发一个模拟操作系统,用作电影的道具.在运行应用程序时,它会杀死explorer.exe,以便您在拍摄期间不会意外地显示Windows任务栏.问题是,关闭模拟操作系统后,我想再次启动explorer.exe.但是,Process.Start("explorer.exe");会打开一个资源管理器窗口,而不会重新启动窗口任务栏.
我知道,事实上,任务管理器能够通过在新任务下键入"explorer.exe"来恢复窗口任务栏,尽管我没有找到传递给任务管理器的命令行参数.
编辑:
我在Windows 7下运行.同样,我正在深入研究这个模拟操作系统.我控制了Windows使用的很多按键.出于这个原因,我杀了explorer.exe,以便我可以使用按键,如"Alt-Tab",并显示模拟应用程序切换器等.该应用程序已经全屏运行,但它仍然可以有基础Windows GUI弹出备份.我基本上用我自己的模拟探索器替换explorer.exe.关闭我的自定义资源管理器后,我似乎无法通过启动explorer.exe来恢复常规Windows GUI Process.Start();.
所以正如标题所暗示的那样,我遇到了一个问题,即客户端发送的命令没有被触发。
我正在尝试使用的基本功能是,当一个敌人出现在玩家面前并且我点击时,该玩家将被暂时惊呆。如果我是主持人,效果很好,并且双方都完美注册。
如果我作为客户端玩游戏,我会到达“应该”发送命令的地步,但我注意到我收到一条警告,上面写着“正在尝试为非本地玩家发送命令”。同样,两端都没有任何反应。显然,我一定是在客户端做错了什么,但不知道还有什么其他方法可以解决这个问题。
“问题”代码。
if (Input.GetButtonDown("Fire1")) {
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit = new RaycastHit();
Physics.Raycast(ray, out hit, 20f);
if (hit.transform != null) {
if (hit.rigidbody != null) {
PlayerController controller = hit.rigidbody.GetComponent<PlayerController>();
if (controller != null) {
if (!controller.stunned) {
// Send the stun command to the server
controller.CmdStun();
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该方法调用
[Command]
public void CmdStun() {
// Report that the stun was sent
UnityEngine.Debug.Log("Stun Sent");
RpcStun();
}
[ClientRpc]
public void RpcStun() { …Run Code Online (Sandbox Code Playgroud)