[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Дружище, не обид, но ты дебил. Подсказываю, как я это понял. Ты смотришь настройки в разделе "C/C++", потом ругаешься, что они не работают в "HTML/JS", потом кричишь, что VS - говно, и тебе приходится еще и сторонний редактор использовать. Интересно, а чего ты ожидал, чтобы настройки для С++ работали вообще для всех типов файлов, так что ли? Или для тебя непосильный труд раз в жизни зайти в раздел настроек, настроить форматирование, автокомплит, интеллисенс и прочее для всех языков, которые тебе нужны, по отдельности?
    Короче... Вон из профессии!
     
    #5601 Bers, 29 Aug 2010
    Last edited: 29 Aug 2010
  2. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    От дебила слышу, специалист хренов. Настройки С++\html одинаковые, раз. Я не говорил, что VS гавно, два. Очень даже хороший редактор.
     
  3. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Круто. Я даже дар речи потерял. Давай по пунктам.

    Ты этой фразой практически отправил меня в ментальный нокаут. Видишь ли... Настройки форматирования для С/C++, для C#, для VBasic, для CSS, для XML, для HTML, для JS находятся в РАЗНЫХ разделах настроек. Повторяю, В РАЗНЫХ! Как?! Как они могут быть одинаковыми? Может быть, ты мне скажешь, где в настройках для C/C++ находятся такие параметры, как "Auto insert close tag", "Insert attribute valeu quotes when typing" и прочие? (это я щас прямо из настроек студии цитирую. если ты не веришь - посмотри сам, если сумеешь)

    Насчет говна - я утрировал, чтобы лучше донести до тебя свой пост. Не вышло.

    VS - не редактор. Это IDE, редакторов там несколько, они там как компоненты сделаны. Сама студия еще много чего в себя включает.

    Короче, повторю - вон из професии, стране нужны дворники.
     
  4. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Не строй из себя специалиста, коем ты абсолютно не являешься.
    Ну извини, не думал что ты такой тупой и все надо уточнять. Я имел ввиду общие одинаковые опции:
    [​IMG]
     
  5. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Молодец, нашел нужную ветку настроек. Уже прогресс. А теперь, поскольку время позднее и телепаты уже ушли спать, не будешь ли ты так добр пояснить, какие именно общие опции ты имеешь в виду? Поскольку я их в упор не вижу. Вижу РАЗНЫЕ опции для РАЗНЫХ языков.
     
  6. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    В шарпе "Automatically format completed block on }", в JS "format completed block on }", почему нет "Automatically"?
     
  7. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Ты серьезно или ты просто решил от нечего делать поиздеваться? Как я понял из этого вот твоего поста - тебя не устраивает тот факт, что текст на чекбоксах для разных языков различается на одно слово "automatically"? Ну возможно потому что разные ветки настроек делались разными командами, одна решила сделать 3 настройки со словом "automatically", а другая решила сделать 3 настройки (для другого языка) без слова "automatically", но зато объединить эти настройки в группу с названием "Automatic formatting". Что тут неясного?
    Серьезно, блин, если твои претензии заключались вот в этом - то у меня просто нет слов (вернее, есть, но я промолчу).

    И еще раз то же самое повторю - настройки для разных языков, с чего ты решил, что они должны называться одинаково? Ясно дело, они могут называться по-разному, лишь бы ясность не терялась. В данном случае не теряется. В чем проблема?
     
    1 person likes this.
  8. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Пф...Зачем тогда встревать в разговор, если не видел первых постов? Проблема в том, что нет автокомплита фигурных и круглых скобок в Js\html. Ну и соответственно переноса на новую строку курсора и табуляции.
     
  9. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Ах так вот оно в чем дело :) Если ведешь речь про посты недельной давности - уточняй, о чем идет речь, так будет быстрее. К тому же твои последние посты не ссылались на тот вопрос, как я вообще должен был догадаться, что ты, цитируя пост про автоформат в C/C++, на самом деле имеешь в виду свой вопрос, заданный тремя страницами ранее.

    Если это - твой вопрос:
    То самый простой ответ на него - используй сниппеты. В VS 2010 есть готовые сниппеты для функций, для циклов, для условий, плюс несложно свои заготовить. Выглядит это примерно так: набираешь, к примеру, function, нажимаешь Tab - сниппет разворачивается. Набираешь имя функции, нажимаешь Enter - курсор стоит внутри тела функции, все скобки расставлены как положено. В VS2008 сниппеты в HTML редакторе, насколько мне известно, не поддерживаются. Возможно, это лечится.

    Вообще, есть такое у меня мнение, что всякий инструмент хорош для своей области применения. Если тебе удобен тот же Aptane - зачем насиловать себя и использовать для тех же задач студию? Все-таки Aptane заточена под HTML/JS, естесственно, она удобнее.
     
  10. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    какой http сервер ? что за платформа,т.е. ос какой ?
     
  11. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    С этого и надо было начинать. Сниппеты знаю, но думал что все проще окажется. Глупо делать нормально форматирование в одном языке и лишать в другом. Насчет аптаны я уже говорил, держать одновременно 2 редактора тоже не очень.
     
  12. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Да в общем-то сниппеты - вполне нормальное и простое решение. В чем-то даже лучше родной поддержки редактором, т.к. сниппеты можно редактировать, добавлять свои и т.п.

    Неприятно, да. Но не смертельно, за неделю вполне можно привыкнуть к не столь умному автокомплиту (сужу по своему опыту, пересел с vs2008+resharper на голую vs2010, первую неделю было неприятно работать, как будто клавиатура говном измазана, а сейчас привык и нормально)
    Можешь попробовать еще такое решение: поставить на студию какогй-нибудь аддон из серии VS.PHP или аналогичный. В VS.PHP есть интеллисенс для HTML и JS. Не знаю, насколько удобный, но скорее всего лучше студийного.

    Хм, неужели аптана настолько тяжела? Я вот не замечал, даже если вместе с ней открыты еще несколько штук студии. Хотя, конечно, дело твое.
     
  13. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    при таких настройках непрерывно пишем
    {}(назад) \*быдло код*\;(Enter)
    И о чудо.
    Code:
    {
         \*быдло код*\;
    }
     
  14. Alien193

    Alien193 Banned

    Joined:
    28 Aug 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    c++ события динамического компонента

    Пытаюсь обработчик события сделать, а все никак не получается. Форм у меня нету и быть не должно.
    Code:
    ClientSocket->OnConnect=ClientSocketConnect;
    Code:
    void __fastcall ClientSocketConnect(TObject* Sender, TCustomWinSocket* Socket)
    {
            //...
    }
    Выдает ошибку:
    Я уже не знаю что делать, пробовал привязать класс к нему, не помогает, все равно вылазит эта ошибка.

    Подскажите, что не так? :confused:
     
  15. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    VS.PHP стоит уже давно (кстати может крек\серийник у кого есть?), но все равно не то.
    Насчет сниппетов...разве можно сделать, чтоб, например, при вызове функции, когда открываешь скобку он добавлял вторую и ставил курсор между ними? И тоже самое с двойными кавычками.
     
  16. Qb1024

    Qb1024 New Member

    Joined:
    15 Jul 2009
    Messages:
    323
    Likes Received:
    4
    Reputations:
    0
    Юзаю готовый денвер, т.е. виндовый апатч 2 версии.
     
  17. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Всем привет :)
    Помогите разобраться с кодом, не могу произвести инжект в чужой процесс :(
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <tchar.h>
    #include <iostream> 
    #include <string.h>
    #include < windows.h>
    #include < tlhelp32.h>
    
    #pragma comment(linker,"/BASE:0x13140000") // сдвигаем базу нашего процесса
    
    // ------- тут как обычно описываем прототипы функций --------
    
    DWORD GetProcessID(char*);
    BOOL Inject(HANDLE,DWORD(WINAPI* func)(LPVOID));
    DWORD WINAPI func(LPVOID);
    
    //-------- главная функция.... вопросов возникнуть не должно :-) ---------
    
    int WINAPI WinMain()
    {
    	if(!Inject(OpenProcess(PROCESS_ALL_ACCESS,false,GetProcessID("explorer.exe")),&func)) return false;
    	return true;
    }
    
    //-------- а вот это та самая функция, которая будет выполнять наши, -------
    //-------- конечно же, доброжелательные действия в ---------------------
    //-------- чужом адресном пространстве :-)) ---------------------------
    
    DWORD WINAPI func(LPVOID)
    {
    //LoadLibrary("kernel32.dll"); // нам необходимо подгрузить жертве в процесс 
    //LoadLibrary("user32.dll"); // требуемые нам библиотеки (их может и не быть изначально)
    SYSTEMTIME SysTime;
    GetSystemTime(&SysTime);
    WORD time=SysTime.wSecond+30;
    while(time!=SysTime.wSecond){GetSystemTime(&SysTime);}
    //MessageBox(0,"Hello from addres area of explorer","title",0);
    return true;
    }
    //-------- в поисках нашей жертвы ---------
    
    DWORD GetProcessID(char* lpNameProcess) // в параметрах передаем имя процесса жертвы
    {
    HANDLE snap;
    PROCESSENTRY32 pentry32;
    snap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if(snap==INVALID_HANDLE_VALUE) return 0;
    pentry32.dwSize=sizeof(PROCESSENTRY32);
    if(!Process32First(snap,&pentry32)) {CloseHandle(snap);return 0;}
    do
    {
    if(!lstrcmp(lpNameProcess,&pentry32.szExeFile[0]))
    {
    CloseHandle(snap);
    return pentry32.th32ProcessID; // вот наша жертва для внедрения кода;-)
    }
    }while(Process32Next(snap,&pentry32));
    CloseHandle(snap);
    return 0;
    }
    
    //-------- функция внедрения в пространство жертвы -------------------
    
    BOOL Inject(HANDLE hProc,DWORD(WINAPI* func)(LPVOID))
    {
    DWORD id;
    DWORD ByteOfWriten;
    HMODULE hModule = GetModuleHandle(NULL);
    DWORD size=((PIMAGE_OPTIONAL_HEADER)((LPVOID)((BYTE*)(hModule)+((PIMAGE_DOS_HEADER)(hModule))->e_lfanew+sizeof(DWORD)+
    sizeof(IMAGE_FILE_HEADER))))->SizeOfImage;
    char* hNewModule = (char*)VirtualAllocEx(hProc,hModule,size,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
    if(hNewModule==NULL) return false;
    WriteProcessMemory(hProc,hNewModule,hModule,size,&ByteOfWriten);
    if(ByteOfWriten!=size){return false;}
    HANDLE hThread=CreateRemoteThread(hProc,NULL,0,func,(LPVOID)hNewModule,0,&id);
    if(hThread==0) return false;
    return true;
    }
    
    При компиляции ошибка
    Code:
    1>------ Build started: Project: inject, Configuration: Debug Win32 ------
    1>Build started 31.08.2010 23:42:13.
    1>InitializeBuildStatus:
    1>  Touching "Debug\inject.unsuccessfulbuild".
    1>ClCompile:
    1>  main.cpp
    1>c:\users\senap\documents\visual studio 2010\projects\inject\inject\main.cpp(20): error C2731: 'WinMain' : function cannot be overloaded
    1>          c:\users\senap\documents\visual studio 2010\projects\inject\inject\main.cpp(19) : see declaration of 'WinMain'
    1>c:\users\senap\documents\visual studio 2010\projects\inject\inject\main.cpp(52): error C2664: 'lstrcmpW' : cannot convert parameter 1 from 'char *' to 'LPCWSTR'
    1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    1>
    1>Build FAILED.
    1>
    
     
  18. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    По поводу первой ошибки с WinMain - она не по прототипу записана. Смотрим прототип здесь: http://msdn.microsoft.com/en-us/library/ms633559%28VS.85%29.aspx
    И записываем ее так:
    Code:
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    ...
    }
    
    По поводу второй ошибки - добавь в самый верх кода строку
    Code:
    #undef UNICODE
    
     
    #5618 GRRRL Power, 31 Aug 2010
    Last edited: 31 Aug 2010
  19. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Разобрался :)

    И что можно почитать о WinAPI для чайника ?
     
    #5619 SeNaP, 31 Aug 2010
    Last edited: 31 Aug 2010
  20. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    А теперь создавай не консольное приложение Windows, а GUI.
    Project - Properties - Linker - System - SubSystem: Windows.
     
    1 person likes this.
Thread Status:
Not open for further replies.