Что нового

Перенос кода с Autoit в C++

rybik

Новичок
Сообщения
84
Репутация
0
Что я пытаюсь выполнить?
Переписать код с Аутоита на С++.

Как я это пытался/ась выполнить?
Мне нужно найти названия функций, например sleep, GUICreate, GUICtrlCreateLabel и другие. Как они называются в языке C++?

Что я ожидаю от выполненных действии?
Хочу полностью переписать код на аутоит, так как аутоит не защищен от декомпозиции.

Буду благодарен любой информации. :smile:
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Re: Перенос когда с Autoit в C++

rybik [?]
https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-sleep

GUICreate, GUICtrlCreateLabel
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-createwindowexa
http://vsokovikov.narod.ru/New_MSDN_API/Window/fn_createwindowex.htm


Хочу полностью переписать код на AutoIt, так как AutoIt не защищен от декомпозиции.
Декомпиляции?
Будет проще переписать на PureBasic, для которого разработана библиотека функций, аналогичная AutoIt. https://www.purebasic.fr/english/viewtopic.php?f=14&t=66067
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: Перенос когда с Autoit в C++

rybik
если ты не знаешь С++, то какой смысл всех телодвижений? боязнь декомпиляции? ты посмотри, крутые игры ломают, программы.
подыши, успокойся и пиши спокойно. но пиши так, чтобы только после литра крепкого понять можно было ;D
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Re: Перенос когда с Autoit в C++

joiner сказал(а):
rybik
если ты не знаешь С++, то какой смысл всех телодвижений? боязнь декомпиляции? ты посмотри, крутые игры ломают, программы.
подыши, успокойся и пиши спокойно. но пиши так, чтобы только после литра крепкого понять можно было ;D

C++ как и другие языки отличаются лишь оформлением, что касается функций я их не знаю. Крутые игры, программы ломают, те кто знают Асемблер, я еще ни разу не видел, чтобы кто-то декомпилировал крутые игры или программы. А что касается аутоит, то тут дело 1 минуты, даже знания Асембрела не нужны. После литра или после пол литра открытый код не защищен никак. Так же пытался написать сервер клиент, к сожалению тема провисела несколько недель, так никто и не знает. Соотвественно на аутоите не осуществимо.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: Перенос когда с Autoit в C++

rybik
дело не в декомпиляции только, а во взломе. я об этом написал. на торрентах полно таблетированных программ. Автоит прост для понимания. может быть стоит обратиться на форум сишников?
к сожалению, наш форум обнищал на профессионалов.
сильные программы на автоит не стоит начинать писать, само название языка говорит, что он для автоматизации.
на нашем форуме уже говорилось, что окно на автоит пишется легко, на СИ придется написать на кучу строк больше. а уж если говорить о написании оконных процедур и самих функций, то код вырастет в разы больше чем на автоит
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Re: Перенос когда с Autoit в C++

rybik [?]
Крутые игры, программы ломают, те кто знают Асемблер, я еще ни разу не видел, чтобы кто-то декомпилировал крутые игры или программы.
Как думаете каким образом появляются лекарства для программ и игр? Путем дизассемблирования находят участки отвечающие за защиту и изменяют их чтобы ее отключить.
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Re: Перенос когда с Autoit в C++

Prog сказал(а):
rybik [?]Как думаете каким образом появляются лекарства для программ и игр? Путем дизассемблирования находят участки отвечающие за защиту и изменяют их чтобы ее отключить.

Только человек знающий асемблер может написать лекарство. Но при наличии декомпилятора знание асемблера не нужны, соответственно и программа уязвима в десятки раз.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Re: Перенос когда с Autoit в C++

joiner [?]
на СИ придется написать на кучу строк больше. а уж если говорить о написании оконных процедур и самих функций, то код вырастет в разы больше чем на AutoIt
Это верно. Простой и понятный код
Код:
#include <GUIConstantsEx.au3>

GUICreate("", 200, 200)
GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
На Си будет таким.
Код:
#include <windows.h>

/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
	switch(Message) {
		
		/* Upon destruction, tell the main thread to stop */
		case WM_DESTROY: {
			PostQuitMessage(0);
			break;
		}
		
		/* All other messages (a lot of them) are processed using default procedures */
		default:
			return DefWindowProc(hwnd, Message, wParam, lParam);
	}
	return 0;
}

/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	WNDCLASSEX wc; /* A properties struct of our window */
	HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
	MSG msg; /* A temporary location for all messages */

	/* zero out the struct and set the stuff we want to modify */
	memset(&wc,0,sizeof(wc));
	wc.cbSize		 = sizeof(WNDCLASSEX);
	wc.lpfnWndProc	 = WndProc; /* This is where we will send messages to */
	wc.hInstance	 = hInstance;
	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
	
	/* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
	wc.lpszClassName = "WindowClass";
	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */

	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, /* x */
		CW_USEDEFAULT, /* y */
		200, /* width */
		200, /* height */
		NULL,NULL,hInstance,NULL);

	if(hwnd == NULL) {
		MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

	/*
		This is the heart of our program where all input is processed and 
		sent to WndProc. Note that GetMessage blocks code flow until it receives something, so
		this loop will not produce unreasonably high CPU usage
	*/
	while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */
		TranslateMessage(&msg); /* Translate key codes to chars if present */
		DispatchMessage(&msg); /* Send it to WndProc */
	}
	return msg.wParam;
}
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Re: Перенос когда с Autoit в C++

rybik сказал(а):
Хочу полностью переписать код на AutoIt, так как AutoIt не защищен от декомпозиции.

OffTopic:

Просто интересно стало, что вы такого важного и секретного пишете, что это необходимо защищать?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Перенос когда с Autoit в C++

rybik [?]
тема провисела несколько недель, так никто и не знает. Соотвественно на AutoItе не осуществимо
Не факт, если провисела ещё не означает что никто не знает, просто нет интереса, и также это не значит что на аутоит не осуществимо.
Тему переношу так как не имеет отношения к общим вопросам по аутоит.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
TCPSend

Прямо в хелпе есть пример реализации примитивного клиентсерверного приложения. А дальше насколько хватит фантазии и скилла.
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Re: Перенос когда с Autoit в C++

Prog сказал(а):
joiner [?]Это верно. Простой и понятный код
Код:
#include <GUIConstantsEx.au3>

GUICreate("", 200, 200)
GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
На Си будет таким.
Код:
#include <windows.h>

/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
	switch(Message) {
		
		/* Upon destruction, tell the main thread to stop */
		case WM_DESTROY: {
			PostQuitMessage(0);
			break;
		}
		
		/* All other messages (a lot of them) are processed using default procedures */
		default:
			return DefWindowProc(hwnd, Message, wParam, lParam);
	}
	return 0;
}

/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	WNDCLASSEX wc; /* A properties struct of our window */
	HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
	MSG msg; /* A temporary location for all messages */

	/* zero out the struct and set the stuff we want to modify */
	memset(&wc,0,sizeof(wc));
	wc.cbSize		 = sizeof(WNDCLASSEX);
	wc.lpfnWndProc	 = WndProc; /* This is where we will send messages to */
	wc.hInstance	 = hInstance;
	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
	
	/* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
	wc.lpszClassName = "WindowClass";
	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */

	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, /* x */
		CW_USEDEFAULT, /* y */
		200, /* width */
		200, /* height */
		NULL,NULL,hInstance,NULL);

	if(hwnd == NULL) {
		MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

	/*
		This is the heart of our program where all input is processed and 
		sent to WndProc. Note that GetMessage blocks code flow until it receives something, so
		this loop will not produce unreasonably high CPU usage
	*/
	while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */
		TranslateMessage(&msg); /* Translate key codes to chars if present */
		DispatchMessage(&msg); /* Send it to WndProc */
	}
	return msg.wParam;
}

Спасибо. Теперь мне нужно суда добавить _GUICtrlStatusBar_SetParts и GUICtrlCreateEdit


Добавлено:
Сообщение автоматически объединено:

Belfigor сказал(а):
Код:
TCPSend

Прямо в хелпе есть пример реализации примитивного клиентсерверного приложения. А дальше насколько хватит фантазии и скилла.

Я это все видел, но сервер не может ответить клиенту, без открывания портов.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
rybik [?]
Это вызов функции SendMessage с параметром SB_SETPARTS. http://www.frolov-lib.ru/books/bsp/v22/ch2_2.html

Вызов функции CreateWindowEx и именем класса Edit.


сервер не может ответить клиенту, без открывания портов.
Со стороны сервера должен быть открыт порт для входящих соединений. Это не зависит от языка программирования.
Порт нужен для того чтобы была возможность доступа к множеству серверов на одном IP.
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Prog сказал(а):
Со стороны сервера должен быть открыт порт для входящих соединений. Это не зависит от языка программирования.
Порт нужен для того чтобы была возможность доступа к множеству серверов на одном IP.

Сервер не может ответить клиенту, потому что каждому клиенту нужно будет открывать порты.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Каждому клиенту открывать порт не требуется. Он открывается только со стороны сервера. Сервер не может устанавливать соединение с клиентом. То есть клиент подключается к серверу и по этому каналу клиент отправляет данные серверу, а сервер клиенту.
Надеюсь поняли что только клиент может подключаться к серверу, а не на оборот.
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Prog сказал(а):
Вызов функции CreateWindowEx и именем класса Edit.

Не понял, можно по подробнее? Я просмотрел все элементы для окон и не нашел там edit который есть в AutoItе...
 

Prog

Продвинутый
Сообщения
537
Репутация
65
rybik [?]
Я просмотрел все элементы для окон и не нашел там edit который есть в AutoItе
Ну как же?
http://vsokovikov.narod.ru/New_MSDN_API/Window/fn_createwindowex.htm
EDIT
(ОКНО РЕДАКТИРОВАНИЯ ТЕКСТА)

Обозначает прямоугольное дочернее окно, внутри которого пользователь может напечатать с клавиатуры текст. Пользователь выбирает орган управления и дает ему фокус клавиатуры, щелкая по нему мышью или перемещая в него, каретку путем нажатия клавиши ТАБУЛЯЦИИ (TAB). Пользователь может вводить текст, когда окно редактирования текста отображает мигающую каретку (caret); используйте мышь, чтобы перемещать курсор, выбирать символы для замены или устанавливать курсор в позицию вставки символов; или используйте клавишу для удаления символов. За большей информацией обратитесь к статье Органы управления редактирования текста.
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Prog сказал(а):
rybik [?]Ну как же?
http://vsokovikov.narod.ru/New_MSDN_API/Window/fn_createwindowex.htm

В висуал студио 2017 я такого не нашел. Но зато нашел TextBox, я так понял они переименовали Edit...
 

Prog

Продвинутый
Сообщения
537
Репутация
65
rybik [?]
Но зато нашел TextBox
Это компонент визуального дизайнера форм.
В студии выбирайте генерацию в нативный код. Ни в коем случае не NET. Для него есть декомпиляторы.
 
Автор
R

rybik

Новичок
Сообщения
84
Репутация
0
Prog сказал(а):
rybik [?]Это компонент визуального дизайнера форм.
В студии выбирайте генерацию в нативный код. Ни в коем случае не NET. Для него есть декомпиляторы.

.NET Native?
 
Верх