Evite el uso del software DeDe para descompilar programas Delphi
Aquí hay un artículo para evitar el uso del software DeDe para descompilar programas Delphi ~
Las que están en "" son mis anotaciones, y el resto son creaciones originales~
PROgrama Proyecto1;
Usos
formularios,
ventanas,
utilidades del sistema,
Unidad1 En 'Unidad1.pas' {Form1},
Unidad2 en 'Unidad2.pas' {Form2};
Función RegisterServiceProcess (dwProcessId, dwType: dWord): entero;
'kernel32.dll' externo
{$R*.RES}
var
HMUTEX: HWND;
RET: ENTERO;
hCurrentWindow: HWnd; //Se requiere descompilación
szText: Array[0..254] Of char; //requerido para la descompilación
Comenzar
aplicación.Inicializar;
APLICACIÓN.TÍTULO := 'diseño de la colección de girasoles de Delphi: Zhang Guopeng';
RegisterServiceProcess(GetCurrentProcessID, 1); //Deja que el programa desaparezca en Ctl+Alt+Supr.
"Podemos ver que el autor utilizó RegisterServiceProcess para registrar el programa como un programa de servicio de WINDOWS ~"
"Pero todo el mundo sabe que esta función está incluida en kernel32 y sólo funciona en 98/ME~"
"Así que no tomes esto como la clave para la descompilación, se puede decir que es prescindible ~"
//Evitar que comience la descompilación
hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);
"Por lo anterior, sé que el autor quiere saber si la ventana de su programa es la ventana de nivel superior".
Mientras hCurrentWindow <> 0 Hacer
Comenzar
Si GetWindowText(hCurrentWindow, @szText, 255) > 0 Entonces
Si pos('DeDe', StrPas(@szText)) <> 0 Entonces
"Si no, obtenga el título del formulario de escritorio actual y determine si es "DeDe""
Comenzar
APPLICATION.MESSAGEBOX('¿Quieres descompilarme? ¡No es tan fácil!',
'Jaja... ¡tú, chico! ',mb_ok);
//closewindow(hCurrentWindow);//Minimizar la ventana del programa
enablewindow(hCurrentWindow, falso);
// Desactiva la ventana del programa. Si puedes obtener el número de ID del hilo del programa, puedes inutilizarlo y no poder cerrarlo. Genial, ¿verdad?
"Las dos oraciones anteriores son el tratamiento de DEDE ~"
"cerrar ventana: para minimizar la ventana especificada, pero la ventana no se borrará de la memoria ~"
"Enablewindow: permitir/deshabilitar la entrada del mouse y el teclado en la ventana especificada, false definitivamente no funcionará ~"
detener;
Fin;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
Fin;
//Evitar que finalice la descompilación
//Evitar que el programa se ejecute dos veces
HMUTEX := CREATEMUTEX(Nil, FALSE, 'Diseño de la colección Girasol de Delphi: Zhang Guopeng');
RET := GETLASTERROR;
Si RET <> ERROR_ALREADY_EXISTS Entonces
Comenzar
Aplicación.CreateForm(TForm1, Form1);
// Aplicación.CreateForm(TForm2, Form2);
Aplicación.Ejecutar;
Fin
Demás
APPLICATION.MESSAGEBOX('¡El programa se ha ejecutado!', 'Pregunta', mb_ok);
liberarmutex(hmutex);
Fin.