This commit is contained in:
恍兮惚兮 2024-04-27 23:53:29 +08:00
parent 7169e7e5bf
commit 6a06a60f21
22 changed files with 8 additions and 187 deletions

View File

@ -800,7 +800,7 @@ def setTabThree_lazy(self):
getsimplecombobox(
static_data["scalemethods_vis"],
globalconfig,
"fullscreenmethod_3",
"fullscreenmethod_4",
),
6,
),
@ -832,31 +832,6 @@ def setTabThree_lazy(self):
("Hook Magpie进程使其不会退出缩放", 4),
getsimpleswitch(globalconfig, "hookmagpie"),
],
[],
[
("LosslessScaling_路径", 4),
(
getcolorbutton(
globalconfig,
"",
callback=lambda x: getsomepath1(
self,
"LosslessScaling_路径",
globalconfig["lossless"],
"path",
"LosslessScaling_路径",
isdir=True,
),
icon="fa.gear",
constcolor="#FF69B4",
),
1,
),
],
[
("Hook LosslessScaling进程使其不会退出缩放", 4),
getsimpleswitch(globalconfig, "hooklossless"),
],
]
tab = self.makesubtab_lazy(
["文本设置", "界面设置", "窗口缩放"],

View File

@ -755,16 +755,16 @@ class QUnFrameWindow(resizableframeless):
# self.refreshtoolicon()
skip = False
if (self.fullscreenmanager is None) or (
self.fullscreenmethod != globalconfig["fullscreenmethod_3"]
self.fullscreenmethod != globalconfig["fullscreenmethod_4"]
):
self.fullscreenmethod = globalconfig["fullscreenmethod_3"]
self.fullscreenmethod = globalconfig["fullscreenmethod_4"]
if self.fullscreenmanager:
skip = self.fullscreenmanager.endX()
self.fullscreenmanager = importlib.import_module(
"scalemethod."
+ static_data["scalemethods"][globalconfig["fullscreenmethod_3"]]
+ static_data["scalemethods"][globalconfig["fullscreenmethod_4"]]
).Method(self._externalfsend)
if skip:
return

View File

@ -1,78 +0,0 @@
from scalemethod.base import scalebase
import os
import windows
from myutils.config import globalconfig
from myutils.hwnd import ListProcess, injectdll
from myutils.subproc import subproc_w
import time
from myutils.wrapper import threader
import re
class Method(scalebase):
@threader
def _wait_lossless_stop_external(self):
while windows.FindWindow("LosslessScaling", None) == 0:
time.sleep(0.5)
while windows.FindWindow("LosslessScaling", None):
time.sleep(0.5)
self.setuistatus(False)
def init(self):
self.injectedpids = set()
def runlossless(self):
exes = [_[1] for _ in ListProcess()]
path = globalconfig["lossless"]["path"]
pexe = os.path.join(path, "LosslessScaling.exe")
if pexe.replace("/", "\\") not in exes:
subproc_w(pexe, cwd=path, name="LosslessScaling")
time.sleep(1)
if globalconfig["hooklossless"]:
for pids, exe in ListProcess():
if exe == pexe.replace("/", "\\"):
for pid in pids:
if pid in self.injectedpids:
continue
dll = os.path.abspath("./files/plugins/hookmagpie.dll")
injecter = os.path.abspath(
"./files/plugins/shareddllproxy{}.exe".format("64")
)
injectdll([pid], injecter, dll)
self.injectedpids.add(pid)
break
def changestatus(self, hwnd, full):
if full:
self.runlossless()
# self._wait_lossless_stop_external()
windows.SetForegroundWindow(hwnd)
time.sleep(0.1)
configpath = os.path.join(
os.environ["LOCALAPPDATA"], "Lossless Scaling/Settings.xml"
)
if os.path.exists(configpath) == False:
return False
with open(configpath, "r", encoding="utf8") as ff:
config = ff.read()
Hotkey = re.findall("<Hotkey>(.*?)</Hotkey>", config)[0]
hotkHotkeyModifierKeysey = re.findall(
"<HotkeyModifierKeys>(.*?)</HotkeyModifierKeys>", config
)[0]
mods = hotkHotkeyModifierKeysey.split(" ")
vkcode = windows.MapVirtualKey(Hotkey)
mp1 = {"Shift": 16, "Windows": 91, "Control": 17, "Alt": 18}
for k in mods:
windows.keybd_event(mp1[k], 0, 0, 0)
windows.keybd_event(vkcode, 0, 0, 0)
windows.keybd_event(vkcode, 0, windows.KEYEVENTF_KEYUP, 0)
for k in mods:
windows.keybd_event(mp1[k], 0, windows.KEYEVENTF_KEYUP, 0)
return True

View File

@ -179,7 +179,7 @@
"ocrrangewidth": 2,
"useproxy": true,
"usesysproxy": true,
"fullscreenmethod_3": 0,
"fullscreenmethod_4": 0,
"dialog_savegame_layout": {
"itemw": 250,
"itemh": 350,
@ -1219,40 +1219,6 @@
"path": ""
},
"proxies": null,
"lossless":{
"path":"",
"scalingMode":0,
"scalingFitMode":0,
"scalingType":0,
"scalingSubtype":0,
"scalingSubtype1":0,
"scalingSubtype2":0,
"scalingSubtype3":0,
"scaleFactor":1.0,
"resizeBeforeScale":true,
"windowedMode":true,
"sharpness":1,
"VRS":false,
"frameGeneration":0,
"clipCursor":false,
"cursorSensitivity":false,
"hideCursor":false,
"scaleCursor":false,
"syncInterval":0,
"doubleBuffering":false,
"vrrSupport":false,
"hdrSupport":false,
"allowTearing":false,
"legacyCaptureApi":false,
"drawFps":false,
"gpuId":0,
"displayId":0,
"captureOffsetLeft":0,
"captureOffsetTop":0,
"captureOffsetRight":0,
"captureOffsetBottom":0,
"multiDisplayMode":false
},
"labelset":[],
"backupsavedatato":""
}

View File

@ -335,8 +335,8 @@
"./files/plugins/DLL32/libcurl.dll"
]
},
"scalemethods":["magpie_builtin","alt_enter","SW_SHOWMAXIMIZED","external_lossless","external_magpie"],
"scalemethods_vis":["Magpie","ALT+ENTER","SW_SHOWMAXIMIZED","LosslessScaling","Magpie_External"],
"scalemethods":["magpie_builtin","alt_enter","SW_SHOWMAXIMIZED","external_magpie"],
"scalemethods_vis":["Magpie","ALT+ENTER","SW_SHOWMAXIMIZED","Magpie_External"],
"transoptimi":[
{
"name":"noundict",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "الحصول على أحدث المستخلص الأساسية و ردود فعل خاطئة و دعم اللعبة",
"外部缩放软件": "برامج التكبير الخارجي",
"Hook Magpie进程使其不会退出缩放": "هوك ماجي العملية بحيث لا تخرج من التكبير",
"Hook LosslessScaling进程使其不会退出缩放": "هوك looslessscaling العملية بحيث لا تخرج من التكبير",
"保持非重复字符": "الحفاظ على الطابع غير المتكرر",
"选择文本窗口中文本框只读": "حدد مربع النص للقراءة فقط في نافذة النص",
"多重区域模式": "وضع منطقة متعددة",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "獲取最新提取器覈心&錯誤迴響&遊戲支持",
"外部缩放软件": "外部縮放軟件",
"Hook Magpie进程使其不会退出缩放": "Hook Magpie行程使其不會退出縮放",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling行程使其不會退出縮放",
"保持非重复字符": "保持非重複字元",
"选择文本窗口中文本框只读": "選擇文字視窗中文字方塊只讀",
"多重区域模式": "多重區域模式",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Get the latest extractor core&error feedback&game support",
"外部缩放软件": "External scaling software",
"Hook Magpie进程使其不会退出缩放": "Hook Magpie process prevents it from exiting scaling",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling process prevents it from exiting scaling",
"保持非重复字符": "Keep non repeating characters",
"选择文本窗口中文本框只读": "Select read-only text boxes in the text window",
"多重区域模式": "Multi region mode",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Obtener el último núcleo del extractor & comentarios erróneos & soporte del juego",
"外部缩放软件": "Software de zoom externo",
"Hook Magpie进程使其不会退出缩放": "El proceso Hook magpie hace que no salga del zoom",
"Hook LosslessScaling进程使其不会退出缩放": "El proceso Hook losslessscaling hace que no salga del zoom",
"保持非重复字符": "Mantener caracteres no repetitivos",
"选择文本窗口中文本框只读": "Seleccione la ventana de texto en la que el cuadro de texto es de solo lectura",
"多重区域模式": "Modelo multiregional",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Obtenez le dernier extractor Core & BUG Feedback & Game support",
"外部缩放软件": "Logiciel de zoom externe",
"Hook Magpie进程使其不会退出缩放": "Le processus Hook Magpie ne quitte pas le zoom",
"Hook LosslessScaling进程使其不会退出缩放": "Hook losslesscaling processus pour ne pas quitter le zoom",
"保持非重复字符": "Garder les caractères non répétitifs",
"选择文本窗口中文本框只读": "Sélectionner une zone de texte en lecture seule dans la fenêtre de texte",
"多重区域模式": "Mode Multi - zones",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Ottieni l'ultimo core&error feedback & supporto al gioco dell'estrattore",
"外部缩放软件": "Software di ridimensionamento esterno",
"Hook Magpie进程使其不会退出缩放": "Il processo Hook Magpie impedisce di uscire dalla scala",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling processo impedisce di uscire dalla scalabilità",
"保持非重复字符": "Mantieni caratteri non ripetuti",
"选择文本窗口中文本框只读": "Selezionare le caselle di testo di sola lettura nella finestra di testo",
"多重区域模式": "Modalità multi regione",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "最新の抽出コア&エラーフィードバック&ゲームサポートの取得",
"外部缩放软件": "外部ズームソフトウェア",
"Hook Magpie进程使其不会退出缩放": "Hook Magpieプロセスはスケールを終了しないようにする",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScalingプロセスはスケーリングを終了しないようにする",
"保持非重复字符": "非反復文字の維持",
"选择文本窗口中文本框只读": "テキストウィンドウのテキストボックス読み取り専用を選択",
"多重区域模式": "複数領域モード",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "최신 추출기 코어 & 오류 피드백 & 게임 지원 받기",
"外部缩放软件": "외부 확대 / 축소 소프트웨어",
"Hook Magpie进程使其不会退出缩放": "Hook Magpie 프로세스로 인해 줌이 종료되지 않습니다.",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling 프로세스로 인해 줌이 종료되지 않습니다.",
"保持非重复字符": "비반복 문자 유지",
"选择文本窗口中文本框只读": "텍스트 선택 창의 텍스트 상자 읽기 전용",
"多重区域模式": "다중 영역 모드",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Uzyskaj najnowszą informację zwrotną o błędach ekstraktora i wsparcie gry",
"外部缩放软件": "Oprogramowanie do skalowania zewnętrznego",
"Hook Magpie进程使其不会退出缩放": "Proces Hook Magpie zapobiega zakończeniu skalowania",
"Hook LosslessScaling进程使其不会退出缩放": "Proces Hook Losslessless Scaling zapobiega zakończeniu skalowania",
"保持非重复字符": "Zachowaj niepowtarzające się znaki",
"选择文本窗口中文本框只读": "Zaznaczanie pola tekstowe tylko do odczytu w oknie tekstowym",
"多重区域模式": "Tryb wielu regionów",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Получите последние ядра экстрактора и обратную связь с ошибками & Поддержка игры",
"外部缩放软件": "Программное обеспечение для внешнего масштабирования",
"Hook Magpie进程使其不会退出缩放": "Процесс Hook Magpie не выводит из масштабирования",
"Hook LosslessScaling进程使其不会退出缩放": "Процесс Hook LosslessScaling не выводит из масштабирования",
"保持非重复字符": "Сохранить символ без повторения",
"选择文本窗口中文本框只读": "Выберите текстовое окно только для чтения",
"多重区域模式": "Многорегиональная модель",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "รับแกนดูดล่าสุดและข้อเสนอแนะข้อผิดพลาดและการสนับสนุนเกม",
"外部缩放软件": "ซอฟต์แวร์ซูมภายนอก",
"Hook Magpie进程使其不会退出缩放": "กระบวนการ Hook Magpie ทำให้ไม่ออกจากการซูม",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling กระบวนการทำให้มันไม่ออกจากซูม",
"保持非重复字符": "เก็บอักขระที่ไม่ซ้ำกัน",
"选择文本窗口中文本框只读": "เลือกกล่องข้อความในหน้าต่างข้อความ อ่านอย่างเดียว",
"多重区域模式": "โหมดหลายโซน",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Son ekstraktör çekirdek&hata geri veri&oyunu desteğini alın",
"外部缩放软件": "Dışarı skalama yazılımı",
"Hook Magpie进程使其不会退出缩放": "Hook Magpie süreci ölçeklenmesini engelledi",
"Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling süreç ölçeklenmesini engelledi",
"保持非重复字符": "Tekrarlamayan karakterleri tut",
"选择文本窗口中文本框只读": "Metin penceresindeki sadece okuyulmuş metin kutularını seçin",
"多重区域模式": "Çok bölge modu",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Отримати останню підтримку гри для відтворення & помилок ядра екстрактора",
"外部缩放软件": "Зовнішнє програмне забезпечення масштабу",
"Hook Magpie进程使其不会退出缩放": "Процес Hook Magpie забороняє їй вийти з масштабу",
"Hook LosslessScaling进程使其不会退出缩放": "Процес безвтратного розміруScaling забороняє їй вийти з розміру",
"保持非重复字符": "Зберегти символи, які не повторюються",
"选择文本窗口中文本框只读": "Виберіть текстові поля для лише читання у текстовому вікні",
"多重区域模式": "Режим декількох регіонів",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "Nhận lõi Extractor mới nhất&Phản hồi lỗi&Hỗ trợ trò chơi",
"外部缩放软件": "Phần mềm Zoom ngoài",
"Hook Magpie进程使其不会退出缩放": "Quá trình Hook Magpie làm cho nó không thoát khỏi zoom",
"Hook LosslessScaling进程使其不会退出缩放": "Quá trình Hook LosslessScaling làm cho nó không thoát khỏi zoom",
"保持非重复字符": "Giữ các ký tự không trùng lặp",
"选择文本窗口中文本框只读": "Chọn hộp văn bản chỉ đọc trong cửa sổ văn bản",
"多重区域模式": "Chế độ đa vùng",

View File

@ -689,7 +689,6 @@
"获取最新提取器核心&错误反馈&游戏支持": "",
"外部缩放软件": "",
"Hook Magpie进程使其不会退出缩放": "",
"Hook LosslessScaling进程使其不会退出缩放": "",
"保持非重复字符": "",
"选择文本窗口中文本框只读": "",
"多重区域模式": "",

View File

@ -2,7 +2,7 @@
if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
add_library(hookmagpie MODULE hookmagpie.cpp veh_hook.cpp)
target_link_libraries(hookmagpie ${Detours})
target_link_libraries(hookmagpie)
endif()

View File

@ -1,7 +1,6 @@
#include <iostream>
#include <windows.h>
#include <thread>
#include <detours.h>
#include <string>
#include <assert.h>
#include "veh_hook.h"
@ -196,36 +195,10 @@ void starthookmagpie()
// DetourAttach(&(PVOID&)IsValidSrcWindow,IsValidSrcWindow_hooked);
// DetourTransactionCommit();
}
auto GetClassNameWs = GetClassNameW;
int
WINAPI
GetClassNameWH(
_In_ HWND hWnd,
_Out_writes_to_(nMaxCount, return) LPWSTR lpClassName,
_In_ int nMaxCount)
{
if (checkislunawindow(hWnd))
{
wcscpy(lpClassName, L"ApplicationManager_ImmersiveShellWindow");
return TRUE;
}
else
return GetClassNameWs(hWnd, lpClassName, nMaxCount);
}
void starthooklossless()
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID &)GetClassNameWs, GetClassNameWH);
DetourTransactionCommit();
}
void starthook()
{
if (GetModuleHandle(L"Magpie.App.dll"))
starthookmagpie();
else if (GetModuleHandle(L"Lossless.dll"))
starthooklossless();
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,