mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-13 18:42:03 +08:00
新增dll检测功能
This commit is contained in:
24
demo/CheckDLL/Check.cpp
Normal file
24
demo/CheckDLL/Check.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/**********************************
|
||||
* 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
|
||||
* 版本:2.5.0
|
||||
* 更新时间:2022年11月18日
|
||||
* 只能在 Wine/Windows 运行
|
||||
**********************************/
|
||||
#include <iostream>
|
||||
#include <Windows.h>
|
||||
using namespace std;
|
||||
int main(int argc, char* argv[]){
|
||||
HINSTANCE hdll;
|
||||
hdll = LoadLibrary(argv[1]);
|
||||
if(argv[1] == ""){
|
||||
cout << "Don't have full parameter" << endl;
|
||||
return 2;
|
||||
}
|
||||
cout << "Checking " << argv[1] << " ......" << endl;
|
||||
if(hdll == NULL){
|
||||
cout << "Error, can't load this library." << endl;
|
||||
return 1;
|
||||
}
|
||||
cout << "No Problem!" << endl;
|
||||
return 0;
|
||||
}
|
||||
BIN
demo/CheckDLL/Check.exe
Executable file
BIN
demo/CheckDLL/Check.exe
Executable file
Binary file not shown.
73
demo/CheckDLL/main.py
Normal file
73
demo/CheckDLL/main.py
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python3
|
||||
# 使用系统默认的 python3 运行
|
||||
#################################################################################################################
|
||||
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
|
||||
# 版本:2.5.0
|
||||
# 更新时间:2022年11月18日
|
||||
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
|
||||
# 基于 Python3 的 PyQt5 构建
|
||||
#################################################################################################################
|
||||
#################
|
||||
# 引入所需的库
|
||||
#################
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
|
||||
if len(sys.argv) <= 1:
|
||||
print("参数不足")
|
||||
sys.exit(1)
|
||||
|
||||
if "--help" in sys.argv:
|
||||
print("帮助:")
|
||||
print("[exe path] [option]")
|
||||
print("--json 以 json 格式输出")
|
||||
print("-w [wine botton] [wine program path]")
|
||||
|
||||
jsonPrint = "--json" in sys.argv
|
||||
if jsonPrint:
|
||||
del sys.argv[sys.argv.index("--json")]
|
||||
lists = []
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
checkDll = False
|
||||
if "-w" in sys.argv:
|
||||
wineCommand = sys.argv.index("-w")
|
||||
wineBotton = os.getenv("HOME")
|
||||
wineProgram = "deepin-wine6-stable"
|
||||
checkDll = True
|
||||
try:
|
||||
wineBotton = sys.argv[wineCommand + 1]
|
||||
wineProgram = sys.argv[wineCommand + 2]
|
||||
except:
|
||||
pass
|
||||
with open(sys.argv[1], "rb") as file:
|
||||
while True:
|
||||
things = file.readline()
|
||||
if things == b"":
|
||||
break
|
||||
for n in [".dll", ".DLL"]:
|
||||
if n.encode() in things:
|
||||
# 提取 DLL 名称
|
||||
for i in str(things[1: -2]).split("\\x"):
|
||||
if n in i:
|
||||
dllName = i[2: ].replace(",{M", "").replace("+", "")
|
||||
if dllName.lower() == ".dll":
|
||||
continue
|
||||
if dllName in lists:
|
||||
continue
|
||||
if checkDll:
|
||||
if jsonPrint:
|
||||
if os.system(f"WINEPREFIX='{wineBotton}' {wineProgram} '{programPath}/Check.exe' '{dllName}' > /dev/null 2>&1"):
|
||||
lists.append(dllName)
|
||||
continue
|
||||
else:
|
||||
os.system(f"WINEPREFIX='{wineBotton}' {wineProgram} '{programPath}/Check.exe' '{dllName}'")
|
||||
lists.append(dllName)
|
||||
elif jsonPrint:
|
||||
lists.append(dllName)
|
||||
continue
|
||||
else:
|
||||
print(dllName)
|
||||
lists.append(dllName)
|
||||
if jsonPrint:
|
||||
print(json.dumps(lists))
|
||||
Reference in New Issue
Block a user