eggplant 发表于 2017-7-13 16:58

不能发贴简单回贴用

本帖最后由 eggplant 于 2025-8-7 18:13 编辑

有没有能一键恢复关机之前打开的程序的软件

简单粗糙的研究了一下,最开始以为应该用Win32 API什么的,但是 EnumWindows 枚举出来的窗口并不是用户任务栏级别的。

所以搜了一下,找到一个C#的,本来找到个C++,因为用的老电脑Win7,不行,这个C#的可以,所以想想Win7能过,高版本Windows应该也不是问题。

参考地址

https://ourcodeworld.com/article ... -csharp-in-winforms


例子C#命令行下就能编译通过,然后你需要自己再显示个程序路径

Console.WriteLine("    PATH : {0}", process.MainModule.FileName);

然后这个程序会列出自己,也就是程序本身的名字,自己写点代码排除一下就行,或者简单点,忽略最后一个结果就行。

因为例子非常简单,就几行代码,所以你可以拿Winform或者什么的再批量处理一下,加个按钮和点击启动什么的。批量全启动可能并不是个好主意,你想干也不是不行。


贴个Winform代码,默认新建Winform,编译时需要指定为x64,因为默认可能x86,32位读不了64位。Win7,VS2017下通过。

新建两个Button控件,button1保存,button2重启

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO;
using System.Diagnostics;

namespace RestartAppPath
{
    public partial class Form1 : Form
    {
      public string saveFileName = "appList.txt";
      public void WritePath()
      {
            Process[] processlist = Process.GetProcesses();

            List<string> paths = new List<string>();
            List<string> passList = new List<string>();

            //忽略Visual Studio编辑器,如果你用其他编辑器,比如VS Code自己测试加入
            passList.Add("devenv");
            //忽略VS命令行Debug测试运行窗口
            passList.Add("VsDebugConsole");
            //忽略程序自己
            passList.Add(Process.GetCurrentProcess().ProcessName);


            for (int i = 0; i < processlist.Length; i++)
            {
                if (!String.IsNullOrEmpty(processlist.MainWindowTitle))
                {
                  bool bShouldAdd = true;
                  for (int j = 0; j < passList.Count; j++)
                  {
                        //过滤忽略列表字符串
                        if (passList == processlist.ProcessName)
                        {
                            bShouldAdd = false;
                            break;
                        }
                  }

                  if (bShouldAdd)
                  {
                        paths.Add(processlist.MainModule.FileName);
                  }



                }
            }

            FileStream out_fs = File.Open(saveFileName, FileMode.Create);
            StreamWriter sw = new StreamWriter(out_fs);

            for (int i = 0; i < paths.Count; i++)
            {
                sw.WriteLine(paths);
            }

            sw.Flush();
            sw.Close();
            out_fs.Close();
      }
      public void StartPath()
      {
            if(File.Exists(saveFileName))
            {
                string[] lines = File.ReadAllLines(saveFileName);
                for (int i = 0; i < lines.Length; i++)
                {
                  Process.Start(lines);
                }
            }
      }

      public Form1()
      {
            InitializeComponent();
      }

      private void button1_Click(object sender, EventArgs e)
      {
            WritePath();
      }

      private void button2_Click(object sender, EventArgs e)
      {
            StartPath();
      }
    }
}
原理
1.保存当前所有程序路径到appList.txt文件,每行1个路径
2.读取每行文本,批量启动

有被扫描进去的,但是又不想重启的路径,自己删除文本文件中那一行就行,比如音乐播放器之类的。









w30of 发表于 2020-3-5 11:36

我帮补充一下
个人很喜欢matt make games,横版开发经验十年有余的老将
Celeste角色部分源码:
https://github.com/NoelFB/Celeste
实现方式真的粗暴

TowerFall Physics 塔倒的物理系统文章
https://mattmakesgames.tumblr.com/post/127890619821/towerfall-physics

mes 发表于 2020-3-5 12:10

看码就太辛苦了,虽然可以试试,但是至少还是想要地图编辑器,比如能配合tiled使用的,反正也看过一下SDL的,就显示个hello也有一大堆,最后也要close些什么,觉得暂时还是

asion617 发表于 2020-3-5 14:27

mark一下

woodcoin 发表于 2020-3-5 14:55

光看这个
C#似乎是最适合独立游戏作者自编的语言?

mes 发表于 2020-3-5 14:58

不如说说怎么编译?要说为什么难这也是个问题。

w30of 发表于 2020-3-5 15:20

woodcoin 发表于 2020-3-5 14:55
光看这个
C#似乎是最适合独立游戏作者自编的语言?

门槛低,语法糖多,Windows开发环境配置方便
不过主要还是得益于XNA和Unity在独立开发者社群中的影响吧

w30of 发表于 2020-3-5 15:23

mes 发表于 2020-3-5 14:58
不如说说怎么编译?要说为什么难这也是个问题。

第一个项目:
Compiling
You will need a compiler supporting C++11. So far, only mingw-w64-g++ 4.8 on Windows has been used, although the code is very portable. You will also need the following libraries:

SDL2
SDL2_mixer
opengl
DevIL
boost
rapidxml

如果那个工程支持独立编译运行,如何编译作者都会写在ReadMe里的呀

爱护动物抓根宝 发表于 2020-3-5 15:40

马克一下。

Smile_D_up 发表于 2020-3-5 15:42



—— 来自 OnePlus GM1910, Android 10上的 S1Next-鹅版 v2.2.0.1

mes 发表于 2020-3-5 15:43

w30of 发表于 2020-3-5 15:23
第一个项目:
Compiling
You will need a compiler supporting C++11. So far, only mingw-w64-g++ 4.8 o ...

这些libraries就是个谜,怎么包括的,路径之类,还要改电脑属性之类,如果mingw还好,好像还能网上自动安装,还有如果自己写那就没项目文件了,又怎么编译?

seducer0719 发表于 2020-3-5 15:48

说到马里奥…我记得PC上有一个只有几关的马里奥…具体几关忘记了…但是全打完会自动回到第一关重新开始…印象里是Pascal写的(存疑)…这个不知道有源码么

—— 来自 OnePlus ONEPLUS A6010, Android 10上的 S1Next-鹅版 v2.2.0.1

w30of 发表于 2020-3-5 16:26

mes 发表于 2020-3-5 15:43
这些libraries就是个谜,怎么包括的,路径之类,还要改电脑属性之类,如果mingw还好,好像还能网上自动安 ...

他用这个mingw我接触的不是很多
不过我用过这些库,boost、rapidxml啥的下载下来的都是一些.hpp .cpp啥的
下载下来再放在mingw的那个库路径里就行了

搜一下相关答案很多
https://stackoverflow.com/questions/4537377/add-extra-include-lib-paths-to-mingw

自己写没项目文件啥意思?

mes 发表于 2020-3-5 17:06

w30of 发表于 2020-3-5 16:26
他用这个mingw我接触的不是很多
不过我用过这些库,boost、rapidxml啥的下载下来的都是一些.hpp .cpp啥的 ...

如果自己写一堆.c文件。

Lunamos 发表于 2020-3-5 18:05

只要是想做游戏而不是做引擎,物理、渲染、资源管理这些底层轮子都别碰了。从GL、SDL、XNA开始写看起来是要酷一些,但都是历史的烟尘。现在的独立作者没有不从通用引擎开始的理由。

w30of 发表于 2020-3-5 18:18

mes 发表于 2020-3-5 17:06
如果自己写一堆.c文件。
c文件的话 我所知是用cmake 配置好可以直接生成.exe
网上随便找个教程
https://zhuanlan.zhihu.com/p/74070812
再配合官方文档
https://cmake.org/cmake/help/latest/guide/tutorial/index.html

呃……你确定要折腾这玩意?
如果从这步开始折腾的话,你之后还会碰一鼻子灰
并且与最开始的意愿已经大相径庭了,现在也很少从这开始开发的

我建议还是只看代码学习一下

感觉有点偏离主题,要不要删一下贴?

mes 发表于 2020-3-5 18:35

w30of 发表于 2020-3-5 18:18
c文件的话 我所知是用cmake 配置好可以直接生成.exe
网上随便找个教程
https://zhuanlan.zhihu.com/p/7407 ...

我已经碰过了,反正也只是碰碰,其他有心人可以再努力点,我个人还是推荐经典2D游戏用Sdl这些比较高效的。

mes 发表于 2020-3-6 22:48

https://i.niupic.com/images/2020/03/06/6YIA.jpg
问个纯属技术上感兴趣,因为现在肯定没人想写,3D碰撞的问题。某3D塞尔达似乎是只有向上永远对齐Y轴的圆柱和可以不对齐任何轴的三角形和四角形(也许可以看成两个三角形),那么怎么算它们有没有碰撞?
github.com/n64decomp/sm64/blob/master/src/engine/surface_collision.c
听说和mario 64比较像,不过看不懂。

violettor 发表于 2020-8-12 06:30

感谢楼主,很有帮助的解答!

violettor 发表于 2023-5-10 16:46

感谢楼主(突然想起自己三年前发了个DRPG的贴,最后虽然没做成,但改成了一个卡牌桌游,和朋友线下玩的还比较乐呵

超纯锑 发表于 2023-8-9 18:24

感谢讲解,让我对该看哪些内容有了大致的了解。
页: [1]
查看完整版本: 不能发贴简单回贴用