不能发贴简单回贴用
本帖最后由 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.读取每行文本,批量启动
有被扫描进去的,但是又不想重启的路径,自己删除文本文件中那一行就行,比如音乐播放器之类的。
我帮补充一下
个人很喜欢matt make games,横版开发经验十年有余的老将
Celeste角色部分源码:
https://github.com/NoelFB/Celeste
实现方式真的粗暴
TowerFall Physics 塔倒的物理系统文章
https://mattmakesgames.tumblr.com/post/127890619821/towerfall-physics
看码就太辛苦了,虽然可以试试,但是至少还是想要地图编辑器,比如能配合tiled使用的,反正也看过一下SDL的,就显示个hello也有一大堆,最后也要close些什么,觉得暂时还是 mark一下 光看这个
C#似乎是最适合独立游戏作者自编的语言? 不如说说怎么编译?要说为什么难这也是个问题。 woodcoin 发表于 2020-3-5 14:55
光看这个
C#似乎是最适合独立游戏作者自编的语言?
门槛低,语法糖多,Windows开发环境配置方便
不过主要还是得益于XNA和Unity在独立开发者社群中的影响吧 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里的呀 马克一下。
—— 来自 OnePlus GM1910, Android 10上的 S1Next-鹅版 v2.2.0.1 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还好,好像还能网上自动安装,还有如果自己写那就没项目文件了,又怎么编译? 说到马里奥…我记得PC上有一个只有几关的马里奥…具体几关忘记了…但是全打完会自动回到第一关重新开始…印象里是Pascal写的(存疑)…这个不知道有源码么
—— 来自 OnePlus ONEPLUS A6010, Android 10上的 S1Next-鹅版 v2.2.0.1 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
自己写没项目文件啥意思? w30of 发表于 2020-3-5 16:26
他用这个mingw我接触的不是很多
不过我用过这些库,boost、rapidxml啥的下载下来的都是一些.hpp .cpp啥的 ...
如果自己写一堆.c文件。 只要是想做游戏而不是做引擎,物理、渲染、资源管理这些底层轮子都别碰了。从GL、SDL、XNA开始写看起来是要酷一些,但都是历史的烟尘。现在的独立作者没有不从通用引擎开始的理由。 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
呃……你确定要折腾这玩意?
如果从这步开始折腾的话,你之后还会碰一鼻子灰
并且与最开始的意愿已经大相径庭了,现在也很少从这开始开发的
我建议还是只看代码学习一下
感觉有点偏离主题,要不要删一下贴?
w30of 发表于 2020-3-5 18:18
c文件的话 我所知是用cmake 配置好可以直接生成.exe
网上随便找个教程
https://zhuanlan.zhihu.com/p/7407 ...
我已经碰过了,反正也只是碰碰,其他有心人可以再努力点,我个人还是推荐经典2D游戏用Sdl这些比较高效的。 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比较像,不过看不懂。 感谢楼主,很有帮助的解答! 感谢楼主(突然想起自己三年前发了个DRPG的贴,最后虽然没做成,但改成了一个卡牌桌游,和朋友线下玩的还比较乐呵 感谢讲解,让我对该看哪些内容有了大致的了解。
页:
[1]