PDA

Просмотр полной версии : Минимальное приложенте. С++.


x-treem
18.05.2007, 18:39
Помогите чайнику. Начинаю учить С++.
Как можно сделать приложение, которое просто висит в процессах, но без всяких око и не грузит систему.

tclover
18.05.2007, 18:45
что такое "но без всяких око"?

je0n
18.05.2007, 18:47
#include <iostream.h>

int main()
{
while(1)
{
}
return 0;
}

типа так чтоле :)

x-treem
18.05.2007, 18:53
око - это окон))
Je0n - твой код сильно грузит систему.
так же вылазит консольное окошко. а надо чтобы программа только висела в процессах.
во как.

madnet
18.05.2007, 18:56
je0n, а зачем циклом загружать ЦП на 99%

Лучше уж

#include <conio.h>
int main()
{
getch();
return 0;
}

madnet
18.05.2007, 19:07
око - это окон))
Je0n - твой код сильно грузит систему.
так же вылазит консольное окошко. а надо чтобы программа только висела в процессах.
во как.


Ну вот те без окон, создаеш симпл win32

#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MessageBox(0,"heck","XeK",MB_OK);
return 0;
}


И пиши в теле что тебе надо, если постоянный надо вешай событие на таймер

invlose
18.05.2007, 19:23
#include <windows.h>
/*Оригинал статьи - http://www.uinc.ru/articles/28/
исходник - http://www.uinc.ru/scripts/load.cgi?articles/28/winhider.zip*/
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:New_WinMain")
#pragma comment(linker,"/NODEFAULTLIB")

void New_WinMain(void)
{
MSG msg;.
while(GetMessage(&msg,NULL,0,0))
TranslateMessage(&msg), DispatchMessage(&msg);
ExitProcess(0);
}




Примечание : на MV C++6 все компилируется ок


сорри - не заметил предыдущий пост

x-treem
18.05.2007, 19:40
#include <windows.h>
/*Оригинал статьи - http://www.uinc.ru/articles/28/
исходник - http://www.uinc.ru/scripts/load.cgi?articles/28/winhider.zip*/
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:New_WinMain")
#pragma comment(linker,"/NODEFAULTLIB")

void New_WinMain(void)
{
MSG msg;.
while(GetMessage(&msg,NULL,0,0))
TranslateMessage(&msg), DispatchMessage(&msg);
ExitProcess(0);
}




Примечание : на MV C++6 все компилируется ок


сорри - не заметил предыдущий пост

а у мну Dev C++. Не компилится:

[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
C:\Dev-Cpp\Makefile.win [Build Error] [Pro.exe] Error 1

nerezus
18.05.2007, 19:49
так же вылазит консольное окошко. а надо чтобы программа только висела в процессах. А это уже ты виноват, т.к. эта прога никакого консольного окошка не создает ;)

x-treem
19.05.2007, 16:52
ясно))

invlose
19.05.2007, 17:10
x-treem



MSG msg;. //точку убери=))))

x-treem
19.05.2007, 18:06
убирал конечно же... не помогло))

invlose
19.05.2007, 18:15
debug ? release

(у меня релиз)

_Great_
19.05.2007, 22:50
#include <windows.h>
main()
{
Sleep(-1);
}

Загрузка ЦП 0% потому как поток исключается из планировщика из-за ожидания бесконечного

nerezus
20.05.2007, 10:05
main() Арр

Обязательно указавать типы. Доказательство: ISO 9899 6.7.2 "At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each struct declaration and type name."

_Great_
20.05.2007, 10:11
Слушай, нер, ты всегда такой правильный, или прикидываешься?

x-treem
20.05.2007, 11:48
http://www.uinc.ru/articles/28/ - вот значит статья. про минимальное приложение. всё толково и по полкам.
НО! у мну получился вот такой код:
#include <windows.h>

#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:New_WinMain")
#pragma comment(linker,"/NODEFAULTLIB")


void New_WinMain(void)
{

}

при компиляции размер программы составляет 75 кб а не 1 обещанный. компилирую Визуалкой 6.0.
может кто нить знает почему такой огромный размер?

_Great_
20.05.2007, 11:50
при компиляции размер программы составляет 75 кб а не 1 обещанный. компилирую Визуалкой 6.0.
может кто нить знает почему такой огромный размер?
Читай тему "Кодерские tips and tricks" в этом разделе, мои посты.

ЗЫ. То, что ты написал - под твои же критерии не походит.

_Great_
20.05.2007, 11:52
Кстати, пока ты только изучаешь С++, лучше не делай ничего из того, что написано про минимизацию размера. НАСТОЯТЕЛЬНО рекомендую!!

x-treem
20.05.2007, 11:56
я понимаю что не подходит, но самое интересное что размер 75 кб. хотя должно быть 1(

_Great_
20.05.2007, 11:58
Я тебе еще раз говорю, сейчас об этом лучше не заморачивайся.

Ro$k-0
20.05.2007, 11:59
Если нужна консоль без окна,то:


int main()
{

#define MY_BUFSIZE 1024 // Размер буфера для заголовка консольного окна.
HWND hwndFound; // Это то, что будет возвращено.
char pszNewWindowTitle[MY_BUFSIZE]; // Уникальный заголовок окна.
char pszOldWindowTitle[MY_BUFSIZE]; // Изначальный заголовок окна.

GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
wsprintf(pszNewWindowTitle,"%d/%d",GetTickCount(),GetCurrentProcessId());
SetConsoleTitle(pszNewWindowTitle);
Sleep(40);
hwndFound=FindWindow(NULL, pszNewWindowTitle);
SetConsoleTitle(pszOldWindowTitle);
ShowWindow(hwndFound,SW_HIDE);

// а это бесконечный цикл
MSG msg;
while (GetMessage (&msg, NULL, 0, 0))
{

TranslateMessage (&msg);
DispatchMessage (&msg);
}
return 0;
}

_Great_
20.05.2007, 12:21
Жуткий изврат.
Ввиду того, что каждый тут хочет померяться один местом, тема закрыта.