[ 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. groupby

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

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Code:
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    
            internal struct TokPriv1Luid
    
            {
    
                public int Count;
    
                public long Luid;
    
                public int Attr;
    
            }
    
     
    
            [DllImport("kernel32.dll", ExactSpelling = true)]
    
            internal static extern IntPtr GetCurrentProcess();
    
     
    
            [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
    
            internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
    
     
    
            [DllImport("advapi32.dll", SetLastError = true)]
    
            internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
    
     
    
            [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
    
            internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
    
            ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
    
     
    
            [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
    
            internal static extern bool ExitWindowsEx(int flg, int rea);
    
     
    
            internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
    
            internal const int TOKEN_QUERY = 0x00000008;
    
            internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
    
            internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
    
            internal const int EWX_LOGOFF = 0x00000000;
    
            internal const int EWX_SHUTDOWN = 0x00000001;
    
            internal const int EWX_REBOOT = 0x00000002;
    
            internal const int EWX_FORCE = 0x00000004;
    
            internal const int EWX_POWEROFF = 0x00000008;
    
            internal const int EWX_FORCEIFHUNG = 0x00000010;
    
     
    
            public static Thread thread1;
    
     
    
            static void DoExitWin(int flg)
    
            {
    
                bool ok;
    
                TokPriv1Luid tp;
    
                IntPtr hproc = GetCurrentProcess();
    
                IntPtr htok = IntPtr.Zero;
    
                ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
    
                tp.Count = 1;
    
                tp.Luid = 0;
    
                tp.Attr = SE_PRIVILEGE_ENABLED;
    
                ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
    
                ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
    
                ok = ExitWindowsEx(flg, 0);
    
            }
    
    Copyright © http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/182cdef6-4189-4e7e-a07a-7c5f25adf954/
     
  2. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Что то я туплю, но в чем ошибка?
    Code:
    	string encode[][] = {
    		{ "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7", "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF",
    	          "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7", "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF",
    	          "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7", "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF",
    		  "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7", "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF"},
    	         {"А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П",
    		  "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я",
    		  "а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п",
    		  "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я"}};
    
     
  3. ToniKapuchon

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

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    в си нет типа string!
     
  4. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    C++ библиотека string
    Если создать таким образом одномерный массив т.е без вторых [] и русских букв то все нормально компилируется.
     
  5. bons

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

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    укажи размерность массива
    например так:
    string encode[][64] = { ...
     
  6. xismyname

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

    Joined:
    7 Sep 2008
    Messages:
    77
    Likes Received:
    7
    Reputations:
    -5
    Если пишеш на C,то :
    Code:
    int main(void)
    {
    	char encode[][16] = {{1,2,4},{1,2,3}};
    }
    
     
  7. xxxxxxxxxxxxxxx

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

    Joined:
    20 Jan 2008
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    -Истинно ли следующее утверждение: иногда полезно создать класс, объектов которого никогда не будет создано?
    -Истинно ли следующее утверждение: если конструктор производного класса не определен, то объекты этого класса будут использовать конструкторы базового класса?
    -Истинно ли следующее утверждение: класс D может быть производным класса С, который в свою очередь является производным класса В, который производный класса А? Смеется
    -Истинно ли следующее утверждение: стрелка, представляющая собой обобщение, указывает на более специфичный класс?
     
  8. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    подскажите синтакс LdrLoadDLL плиз.
     
  9. bons

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

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    Code:
    NTSTATUS LdrLoadDll( 
                    PWSTR szcwPath,
                    PDWORD pdwLdrErr,      
                    PUNICODE_STRING pUniModuleName,
                    PHINSTANCE pResultInstance
            );
    
    назначение параметров как бы очевидно
     
  10. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Я новичок в С++, хочу организовать отправку файла со своего компа на фтп, winapi функцией FtpPutFile,

    Code:
    //---------------------------------------------------------------------------
    
    #include <clx.h>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
    char *user="login";
    char *pass="pass";
    char *ftpserver="server.com";
    char *file;
    HINTERNET hInternet;
    HINTERNET hFtpSession;
    hInternet = InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
    hFtpSession = InternetConnect(hInternet,ftpserver , INTERNET_DEFAULT_FTP_PORT, user, pass, INTERNET_SERVICE_FTP, 0, 0);
    if(FtpPutFile(hFtpSession, file, "c:\\1.txt", FTP_TRANSFER_TYPE_BINARY, INTERNET_FLAG_PASSIVE) == TRUE){
    Sleep(30);
    InternetCloseHandle(hFtpSession);
    InternetCloseHandle(hInternet);
    
    
    }
            return 0;
    }
    //---------------------------------------------------------------------------
    
    но при линковке возникают ошибки, неподскажите из за чего?

    [​IMG]
     
  11. groupby

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

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Либу wininet.lib прилинковать надо. Можно в хедере прописать к примеру:

    #pragma comment(lib, "wininet.lib")
     
  12. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    groupby, спасибо код компелируется, но файл на сервер передавать нехочет, не знаеш из за чего?
     
  13. groupby

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

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    http://msdn.microsoft.com/en-us/library/aa384170(VS.85).aspx

    Вторым параметром у тебя в FtpPutFile должен быть локальный адрес ("c:\\file.txt") а третьим имя удаленного файла к примеру file.txt, т.е имя нельзя оставлять пустым как ты это сделал (ты ещё и параметры местами поменял ) ). Дальше.. что-то последний параметр в FtpPutFile у тебя странный (INTERNET_FLAG_PASSIVE). Посмотри что должно быть последним параметром. В твоем случае как я понимаю должно быть просто NULL.
     
    1 person likes this.
  14. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Executable%20Images/LdrLoadDll.html
     
    1 person likes this.
  15. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Как правильно написать вот это:
    Code:
    for (int j = 0; j < myStrok.size(); j++)
       for (int i = 0; i < myStrok.size(); i++) 
          if (myStrok[i]==encode[0][j]) myStrok[i]=encode[1][j];
    
    Знаю что это не правильно и так со строками делать нельзя, это для того что бы было понятно что мне нужно.
    myStrok и encode - string
     
  16. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    как можно получить хендлы всех потоков текущего процесса?
     
  17. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    groupby, благодарю всё теперь Ок
     
  18. _antony

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

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    http://msdn.microsoft.com/en-us/library/ms686852(VS.85).aspx
    еше можешь посмотреть в сторону ZwQuerySystemInformation. удачи.
     
  19. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Как ни пытался сделать процесс с параметрами - ничего не выходит. Окончательный вариант

    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    GetStartupInfo(&si);
    CreateProcess(L"test.exe", L"-x", 0, 0, 0, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
    ExitProcess(0);
     
  20. _Kris_

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

    Joined:
    22 Jul 2008
    Messages:
    53
    Likes Received:
    31
    Reputations:
    5
    Полный путь до процесса? до твоего test.exe

    Добавлено: если, что его не сюда постить надо было, а вставить в код и попробывать скомпилить.


    Code:
    [B]
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    GetStartupInfo(&si);
    CreateProcess(L"C:\\Program Files\\TEST\\test.exe", L"-x", 0, 0, 0, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
    ExitProcess(0);[/B]
     
    #1860 _Kris_, 19 Nov 2008
    Last edited: 19 Nov 2008
Thread Status:
Not open for further replies.