HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

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

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

  #1661  
Старый 30.09.2008, 19:34
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Да, а потом уже и asm вставками можно ожидание нажатия начать делать =\
 

  #1662  
Старый 30.09.2008, 19:34
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

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

Зачем вам getch, одумайтесь, люди! Есть же cin.get() который делает то же самое!!!
Код:
#include <iostream>
using namespace std;
int main()   
{   
    cout << "Hello\n";   
    cin.get();   
    return 0;   
}
И всё!
 

  #1663  
Старый 01.10.2008, 21:58
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

жжете)
Код:
#include <iostream>
#include <windows.h>
using namespace std;
int main()   
{   
    cout << "PreweDD\n";   
    system("PAUSE");   
    return 0;   
}
 

  #1664  
Старый 02.10.2008, 12:37
fire64
Участник форума
Регистрация: 01.04.2008
Сообщений: 200
Провел на форуме:
1059196

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

дайте кто-нибудь простой исходник на C++
для перехвата консоли, обыскал весь инет, ничего не нашел
 

  #1665  
Старый 02.10.2008, 12:41
D1mka
Участник форума
Регистрация: 02.01.2008
Сообщений: 116
Провел на форуме:
1013405

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

а как в ВС2008 сделать что бы нумерация строк была?
 

  #1666  
Старый 02.10.2008, 12:52
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Цитата:
а как в ВС2008 сделать что бы нумерация строк была?
Положение курсора показывается в статусбаре внизу, там можно узнать номер строки.
А так чтобы прямо нумерация - не знаю, скорее всего нельзя.
 

  #1667  
Старый 02.10.2008, 13:47
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

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

[D1mka]
Tools -> Options -> Text Editor -> C/C++ -> General -> на вкладке Display поставь галочку у Line Numbers.
 

  #1668  
Старый 02.10.2008, 14:22
ExZoD
Новичок
Регистрация: 04.06.2008
Сообщений: 24
Провел на форуме:
55730

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

Цитата:
Сообщение от fire64  
дайте кто-нибудь простой исходник на C++
для перехвата консоли, обыскал весь инет, ничего не нашел
плохо искал
Код:
#include "proc.h"

CIORedirection::CIORedirection()
{
    ZeroFields();
	wait = 60000;
}

CIORedirection::~CIORedirection()
{
    Close();
}

CIORedirection::CIORedirection(const CIORedirection&)
{
}

void CIORedirection::operator = (const CIORedirection&)
{
}

void CIORedirection::ZeroFields()
{
    m_hNewStdIn = m_hNewStdOut = m_hReadStdOut = m_hWriteStdIn = NULL;
    ::ZeroMemory((void*)&m_processInfo, sizeof(PROCESS_INFORMATION));
    ::ZeroMemory((void*)&m_startupInfo, sizeof(STARTUPINFO));
    ::ZeroMemory((void*)&m_secAttributes, sizeof(SECURITY_ATTRIBUTES));
    ::ZeroMemory((void*)&m_secDescriptor, sizeof(SECURITY_DESCRIPTOR));
}

BOOL CIORedirection::IsWinNT()
{
    OSVERSIONINFO osverinfo;
    osverinfo.dwOSVersionInfoSize = sizeof(osverinfo);
    ::GetVersionEx(&osverinfo);
    return (osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT);
}

void CIORedirection::InitSecurity()
{
    if (IsWinNT())
    {
        ::InitializeSecurityDescriptor(&m_secDescriptor,
                                    SECURITY_DESCRIPTOR_REVISION);
        ::SetSecurityDescriptorDacl(&m_secDescriptor, TRUE, NULL, FALSE);
        m_secAttributes.lpSecurityDescriptor = &m_secDescriptor;
    }
    else m_secAttributes.lpSecurityDescriptor = NULL;
    m_secAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
    m_secAttributes.bInheritHandle = TRUE;
}

void CIORedirection::Create(const char *pAppName, char *pCmdLine, char *CurrentDirectory)
{
    if (m_processInfo.hProcess)
		return;
    InitSecurity();
    if (!::CreatePipe(&m_hNewStdIn, &m_hWriteStdIn, &m_secAttributes, 0))
		return;
    if (!::CreatePipe(&m_hReadStdOut, &m_hNewStdOut, &m_secAttributes, 0))
    {
        CloseHandle(m_hNewStdIn);
        CloseHandle(m_hWriteStdIn);
		return;
    }
    ::GetStartupInfo(&m_startupInfo);
    m_startupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
    m_startupInfo.wShowWindow = SW_HIDE;
    m_startupInfo.hStdOutput = m_hNewStdOut;
    m_startupInfo.hStdError = m_hNewStdOut;
    m_startupInfo.hStdInput = m_hNewStdIn;
    if (!::CreateProcess(pAppName, pCmdLine, NULL, NULL, TRUE,
        CREATE_NEW_CONSOLE, NULL, CurrentDirectory, &m_startupInfo, &m_processInfo))
    {
        Close();
		return;
    }
	WaitForSingleObject(m_processInfo.hProcess, wait);
}

DWORD CIORedirection::GetExitCode() const
{
    DWORD dwExitCode = 0;
    GetExitCodeProcess(m_processInfo.hProcess, &dwExitCode);
    return dwExitCode;
}

void CIORedirection::Terminate()
{
    DWORD dwExitCode = GetExitCode();
    TerminateProcess(m_processInfo.hProcess, dwExitCode);
}

void CIORedirection::Close()
{
    if (GetExitCode() == STILL_ACTIVE) Terminate();
    if (m_processInfo.hProcess)
    {
        ::CloseHandle(m_processInfo.hThread);
        ::CloseHandle(m_processInfo.hProcess);
    }
    if (m_hNewStdIn) ::CloseHandle(m_hNewStdIn);
    if (m_hNewStdOut) ::CloseHandle(m_hNewStdOut);
    if (m_hReadStdOut) ::CloseHandle(m_hReadStdOut);
    if (m_hWriteStdIn) ::CloseHandle(m_hWriteStdIn);
    ZeroFields();
}

BOOL CIORedirection::Read(char *lpBuf,
                          DWORD dwBufSize,
                          DWORD *pBytesRead)
{
    unsigned long avail;
    BOOL bRes = ::PeekNamedPipe(m_hReadStdOut,lpBuf,dwBufSize,pBytesRead,&avail,NULL);
    if (!bRes)
		return FALSE;
    if (*pBytesRead != 0)
	{
        bRes = ::ReadFile(m_hReadStdOut,lpBuf,dwBufSize,pBytesRead,NULL);
	}
    return bRes;
}

BOOL CIORedirection::Write(const char *lpBuf,
                           DWORD dwBufSize,
                           DWORD *pBytesRead)
{
	WriteFile(m_hWriteStdIn, lpBuf, dwBufSize, pBytesRead, NULL);
	Read((char *)lpBuf, dwBufSize, pBytesRead);
    return (::WriteFile(m_hWriteStdIn, "\n", dwBufSize, pBytesRead, NULL));
}

void CIORedirection::SetWait(int milliseconds)
{
	wait = milliseconds;
}

int FileExists(char *directory, char *filename)
{
	WIN32_FIND_DATAA dataFind;
	HANDLE hFind;
	hFind = FindFirstFileA(filename, &dataFind);
	if(hFind == INVALID_HANDLE_VALUE)
	{
		char abs_path[MAX_PATH];
		if(directory[strlen(directory)-1] == '\\')
			sprintf(abs_path, "%s%s", directory, filename);
		else
			sprintf(abs_path, "%s\\%s", directory, filename);
		hFind = FindFirstFileA(abs_path, &dataFind);
		if(hFind == INVALID_HANDLE_VALUE)
		{
			if(strlen(filename) == 3 && filename[1] == ':')
			{
				DWORD uDrive = toupper(filename[0]) - 'A';
				uDrive = 1 << uDrive;
				if(GetLogicalDrives() & uDrive)
					return 1;
				else
					return 0;
			}
			else
				return 0;
		}
		FindClose(hFind);
		return 2;
	}
	FindClose(hFind);
	return 1;
}

CMD::CMD()
{
	GetCurrentDirectoryA(MAX_PATH, cur_dir);
	sys_env = (char *)malloc(2000);
	memset(sys_env, 0, 2000);
	GetEnvironmentVariableA("Path", sys_env, 2000);
	env_pos = strlen(sys_env);
	sys_env[env_pos] = ';';
	memcpy(sys_env+env_pos+1, cur_dir, strlen(cur_dir));
	SetEnvironmentVariableA("Path", sys_env);
}

void CMD::SetWait(int milliseconds)
{
	console.SetWait(milliseconds);
}

void CMD::Exec(char *command, char *outbuf, int bufsize)
{
	if(!memcmp(command, "cd ", 3))
	{
		char buffer[MAX_PATH+3];
		int offset = 0, len, res;
		strcpy(buffer, command);
		offset = 3;
		if(buffer[offset] == '"')
			offset++;
		len = strlen(buffer)-1;
		if(buffer[len] == '"')
		{
			buffer[len] = 0;
			len--;
		}
		if(buffer[len] == '\\' && buffer[len-1] != ':')
			buffer[len] = 0;
		res = FileExists(cur_dir, &buffer[offset]);
		if(!res)
			goto m1;
		if(res == 1)
			strcpy(cur_dir, &buffer[offset]);
		else if(res == 2)
		{
			strcat(cur_dir, "\\");
			strcat(cur_dir, &buffer[offset]);
		}
		sys_env[env_pos+1] = 0;
		strcat(sys_env, cur_dir);
		SetEnvironmentVariableA("Path", sys_env);
		goto m1;
	}
	char filename[MAX_PATH];
	GetSystemDirectory(filename, MAX_PATH);
	sprintf(filename, "%s\\cmd.exe /c %s", filename, command);
	console.Create(0, filename, cur_dir);
	console.Read(outbuf, bufsize, (DWORD *)&bufsize);
	console.Close();
	outbuf += bufsize;
m1:
	sprintf(outbuf, "%s>", cur_dir);
}
юзать примерно так:
Код:
		char buffer[10000];
		memset(buffer, 0, sizeof(buffer);
		cmd.Exec("dir", buffer, sizeof(buffer));
в buffer будет результат выполнения команды. собсна вставляешь вместо "dir" путь к консольной проге и в путь
 

  #1669  
Старый 02.10.2008, 14:33
fire64
Участник форума
Регистрация: 01.04.2008
Сообщений: 200
Провел на форуме:
1059196

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

а где proc.h достать ?
 

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

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

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

Собственно как этот поиск реализовать? Может есть какая-нибудь функция для работы со строками подходящая под этот пример?
Сделал на лабе все проверки в циклах - препод сказал мол сильно громоздко =(
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53



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


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




ANTICHAT.XYZ