ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #4891  
Старый 22.02.2010, 00:32
BastardFromHell
Познающий
Регистрация: 05.02.2010
Сообщений: 59
Провел на форуме:
360122

Репутация: 41
По умолчанию

google GDI
 

  #4892  
Старый 22.02.2010, 01:03
agrofyl2
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме:
146826

Репутация: 17
По умолчанию

Мне бы функцию чтоли... Я новичок сам врядли разберусь.
 

  #4893  
Старый 22.02.2010, 02:18
BastardFromHell
Познающий
Регистрация: 05.02.2010
Сообщений: 59
Провел на форуме:
360122

Репутация: 41
По умолчанию

Цитата:
Сообщение от agrofyl2  
Мне бы функцию чтоли... Я новичок сам врядли разберусь.
http://www.rsdn.ru/forum/winapi/3551012.flat.aspx
но принцип примерно такой
Код:
#include <windows.h>
#include <stdio.h>
extern "C" WINBASEAPI HWND WINAPI GetConsoleWindow (); 

int main()
{
	HWND hWindow = NULL;     // дескриптор окна
	HDC hDeviceContext;      // контекст устройства
	HPEN hPen;               // дескриптор пера
	HGDIOBJ hObject;         // дескриптор GDI объекта

	// получаем дескриптор окна
	hWindow = GetConsoleWindow();

	if (hWindow == NULL)
	{
		printf("Get console window failed.\n");

		return 1;
	}
	else
		printf("Cet console window is done.\n");

	// получаем контекст устройства
	hDeviceContext = GetDC(hWindow);
	// создаем перо
	hPen = CreatePen(PS_SOLID, 10, RGB(0, 255, 0));
	// устанавливает перо
	hObject = SelectObject(hDeviceContext, hPen);

	// рисуем x
	MoveToEx(hDeviceContext, 100, 200, NULL);
	LineTo(hDeviceContext, 200, 100);
	MoveToEx(hDeviceContext, 200, 200, NULL);
	LineTo(hDeviceContext, 100, 100);
	//y
	MoveToEx(hDeviceContext, 300, 200, NULL);
	LineTo(hDeviceContext, 400, 100);
	MoveToEx(hDeviceContext, 300, 100, NULL);
	LineTo(hDeviceContext, 350, 150);
	//й
    MoveToEx(hDeviceContext, 500, 100, NULL);
	LineTo(hDeviceContext, 500, 200);
	LineTo(hDeviceContext, 600, 100);
	LineTo(hDeviceContext, 600, 200);
	MoveToEx(hDeviceContext, 540, 50, NULL);
	LineTo(hDeviceContext, 560, 70);
	LineTo(hDeviceContext, 580, 50);

	// востанавливает старый объект
	SelectObject(hDeviceContext, hObject);

	// освобождаем объекты
	DeleteObject(hPen);
	ReleaseDC(hWindow, hDeviceContext);

	return 0;
}

Последний раз редактировалось BastardFromHell; 22.02.2010 в 02:45..
 

  #4894  
Старый 22.02.2010, 08:37
raven314
Новичок
Регистрация: 30.01.2009
Сообщений: 23
Провел на форуме:
39927

Репутация: 2
По умолчанию

ребят, с+/ подойдет для использования его в процессе программирования микросхем авр\пик ? или все же мне за ассемблер садиться ?
 

  #4895  
Старый 22.02.2010, 09:14
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме:
2083691

Репутация: 330
По умолчанию

С подойдет.
 

  #4896  
Старый 22.02.2010, 13:25
agrofyl2
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме:
146826

Репутация: 17
По умолчанию

BastardFromHell спасибо
Если кому надо вот что я накопал
Код:
void Draww(const char *string) {
	
	LOGFONT lf;
	HFONT hf;

	HDC hDeviceContext;      // контекст устройства
	//HPEN hPen;               // дескриптор пера
	HGDIOBJ old;         // дескриптор GDI объекта
	// получаем контекст устройства (0 - hwid рабочего стола)
	hDeviceContext = GetDC(0);

 	RtlZeroMemory(&lf, sizeof(lf));
	lstrcpyA(lf.lfFaceName, "Arial");
	lf.lfHeight = 42;
	lf.lfWeight = FW_NORMAL;
	lf.lfCharSet = RUSSIAN_CHARSET;
	hf = CreateFontIndirect(&lf);

	old = SelectObject(hDeviceContext, hf);
	RECT rectt;
	SetRect(&rectt, 0, 0, 1024, 768); 
	HANDLE h=CreateEvent(0, true, false, "et");
	DrawText(hDeviceContext, string, -1, &rectt, DT_LEFT);	
	
	WaitForSingleObject(h,1000);

	// востанавливает старый объект
	SelectObject(hDeviceContext, old);
	// освобождаем объекты
	DeleteObject(hf);
	ReleaseDC(0, hDeviceContext);
}
Функция просто выводит текст на экран в левом верхнем углу.
Только смотрите там строчка SetRect(&rectt, 0, 0, 1024, 768) экрано-зависимая, если надо то исправьте сами.

Последний раз редактировалось agrofyl2; 22.02.2010 в 17:19..
 

  #4897  
Старый 22.02.2010, 14:57
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

как обстоят дела в windows 7 с сырыми сокетами? Можно как-то завести их?
 

  #4898  
Старый 22.02.2010, 15:55
BastardFromHell
Познающий
Регистрация: 05.02.2010
Сообщений: 59
Провел на форуме:
360122

Репутация: 41
По умолчанию

сейчас хотел длинну массвива посчитать, чёт не вышло -
Код:
#include <cstdio>
#include <stddef.h>

int main(void)
{
	ptrdiff_t diff;
	int array[50];
	for(int i = 0; i<50; i++)
	{
		array[i]=i+1;
	}
	printf("first: %d, last: %d, firstptr: %p lastptr: %p\n",array[0], array[49], array, &array[49] );
	diff = &array[49] - &array[0];
	printf("arraysize is: %d , diff: %p, sizeof(int): %d", diff/sizeof(int), diff, sizeof(int));
	return 0;
}
вывод:
Код:
D:\dmc\bin>array_length.exe
first: 1, last: 50, firstptr: 0012FE7C lastptr: 0012FF40
arraysize is: 12 , diff: 00000031, sizeof(int): 4
гдё я туплю?

Последний раз редактировалось BastardFromHell; 22.02.2010 в 17:04..
 

  #4899  
Старый 22.02.2010, 17:33
Lee_fx
Познающий
Регистрация: 27.09.2008
Сообщений: 57
Провел на форуме:
265628

Репутация: 23
По умолчанию

похожу тут
diff/sizeof(int)
 

  #4900  
Старый 22.02.2010, 17:53
BastardFromHell
Познающий
Регистрация: 05.02.2010
Сообщений: 59
Провел на форуме:
360122

Репутация: 41
По умолчанию

Цитата:
Сообщение от ntldr  
как обстоят дела в windows 7 с сырыми сокетами? Можно как-то завести их?
Limitations on Raw Sockets

On Windows 7, Windows Server 2008 R2, Windows Vista, and Windows XP with Service Pack 2 (SP2), the ability to send traffic over raw sockets has been restricted in several ways:

TCP data cannot be sent over raw sockets.
UDP datagrams with an invalid source address cannot be sent over raw sockets. The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped. This change was made to limit the ability of malicious code to create distributed denial-of-service attacks and limits the ability to send spoofed packets (TCP/IP packets with a forged source IP address).
A call to the bind function with a raw socket is not allowed.
ты гуглить не умеешь чтоли?
сурс - http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ