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

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

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    мне нада чтобы было универсально для всей винды
    и как создать системный скрытый папку в Си
    desTiny идея та хорошая но если у нево на двух директориях стоит винда то тагда что делать?
    на виндах ниже ИТ работает ли функция GetWindowsDirectory()??
     
    #861 KSoniX, 13 Mar 2008
    Last edited: 13 Mar 2008
  2. noobyara

    noobyara Member

    Joined:
    27 Jan 2008
    Messages:
    13
    Likes Received:
    8
    Reputations:
    0
    ниже NT? да.(с 95 начиная).
    Еще по твоей теме можешь посмоьреть это http://delphiworld.narod.ru/base/windows_name_spaces.html
     
  3. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Да? А Msdn говорит, что нет:
    http://msdn2.microsoft.com/en-us/library/ms724426(VS.85).aspx
     
  4. bons

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

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    Инфа из SDK:

    Import library: user32.lib
    Header file: winuser.h
     
  5. noobyara

    noobyara Member

    Joined:
    27 Jan 2008
    Messages:
    13
    Likes Received:
    8
    Reputations:
    0
    Code:
    GetWindowsDirectory
    
    Retrieves the path of the Windows directory. The Windows directory contains such files as applications, initialization files, and help files. 
    
    This function is provided primarily for compatibility. Applications should store code in the Program Files folder and persistent data in the Application Data folder in the user's profile. For more information, see ShGetFolderPath. 
    
    
    UINT GetWindowsDirectory(
      LPTSTR lpBuffer,
      UINT uSize
    );
    
    Parameters
    lpBuffer 
    [out] A pPointer to a buffer that receives the path. This path does not end with a backslash unless the Windows directory is the root directory. For example, if the Windows directory is named Windows on drive C, the path of the Windows directory retrieved by this function is C:\Windows. If the system was installed in the root directory of drive C, the path retrieved is C:\. 
    uSize 
    [in] The maximum size of the buffer specified by the lpBuffer parameter, in TCHARs. This value should be set to MAX_PATH. 
    Return Value
    If the function succeeds, the return value is the length of the string copied to the buffer, in TCHARs, not including the terminating null character. 
    
    If the length is greater than the size of the buffer, the return value is the size of the buffer required to hold the path. 
    
    If the function fails, the return value is zero. To get extended error information, call GetLastError. 
    
    Remarks
    The Windows directory is the directory where an application should store initialization and help files. If the user is running a shared version of the system, the Windows directory is guaranteed to be private for each user. 
    
    If an application creates other files that it wants to store on a per-user basis, it should place them in the directory specified by the HOMEPATH environment variable. This directory will be different for each user, if so specified by an administrator, through the User Manager administrative tool. HOMEPATH always specifies either the user's home directory, which is guaranteed to be private for each user, or a default directory (for example, C:\USERS\DEFAULT) where the user will have all access. 
    
    Terminal Services:   If the application is running in a Terminal Services environment, each user has a private Windows directory. There is also a shared Windows directory for the system. If the application is Terminal-Services-aware (has the IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE flag set in the image header), this function returns the path of the system Windows directory, just as the GetSystemWindowsDirectory function does. Otherwise, it retrieves the path of the private Windows directory for the user. 
    Example Code 
    For an example, see Getting System Information. 
    
    Requirements
    Client Requires Windows Vista, Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95. 
    Server Requires Windows Server "Longhorn", Windows Server 2003, Windows 2000 Server, or Windows NT Server. 
    Header Declared in Winbase.h; include Windows.h.
     
    Library Use Kernel32.lib.
     
    DLL Requires Kernel32.dll.  
    Unicode Implemented as GetWindowsDirectoryW (Unicode) and GetWindowsDirectoryA (ANSI). Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode.
     
    
    See Also
    System Information Functions
    GetCurrentDirectory
    GetSystemDirectory
    GetSystemWindowsDirectory
    
    Send comments about this topic to Microsoft
    
    [U]Build date: 2/1/2007[/U]
    
    
    Возможно они что-то изменили в этой функции, у меня в MSDN(на компе), пишут что поддерживается, что ты указал то не поддерживается. Build date: 2/28/2008 - Online MSDN, видимо нужно верить ему...
     
    1 person likes this.
  6. Forcer

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

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    можно использовать getenv(). находится в stdlib.h. пример:
    Code:
    printf("%s", getenv("HOMEPATH"));
     
    1 person likes this.
  7. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    значет мне поюзать не дано ((*
    я под фряхой
     
  8. bons

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

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    Вот как. Там наверно сработает просто если fprintf(sock,"формат",параметры);
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    zythar
    Пиши в сокет с помощью send, sendto, write...
     
  10. KSoniX

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

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    как создать системный скрытый папку в Си? Pls...
     
  11. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Апишная функция
    CreateProceess() - почитай в MSDN-e

    В качестве параметра что делать в первый раз: "mkdir hzhz", а во-второй: "attrib +hs hzhz" - вроде так... Если напутал, то посмотри attrib /?
     
  12. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    >>zythar
    >>Пиши в сокет с помощью send, sendto, write...

    дак ни send ни write ни sendto(насчет этого точно не знаю но врядли) не могут делать форматный вывод в сокет. а именно это мне надо.

    2bons

    пробовал делать fprintf(s, "format", vars). итог segmenation fault.
     
  13. Forcer

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

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    KSoniX
    Для создания папки есть функция CreateDirectory(). Для изменеия аттрибутов папки и конкретно для скрытия папки есть функция SetFileAttributes. Находятся в windows.h. Небольшой пример:
    Code:
    char* dir = "E:\\testfolder";
    CreateDirectory(dir, 0);
    SetFileAttributes(dir, FILE_ATTRIBUTE_HIDDEN);
    Добавление:
    можно использовать функцию system(). Находится в stdlib.h. небольшой пример:
    Code:
    system("mkdir E:\\testfolder");
    system("attrib +H /S /D E:\\testfolder");
    такой вариант пришёл в голову после поста desTiny ))
     
    #873 Forcer, 14 Mar 2008
    Last edited: 14 Mar 2008
  14. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Дык это, а почему нельзя подготовить строку,например, с помощью sprintf, а потом отсылать в сокет?
    Code:
    sprintf (stroka, "STRING:%s %d", var1, var2);
    write (sock, stroka, strlen(stroka));
    
    Хотя этот код грешит переполнением буфера :)
     
  15. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    нельзя ибо когда я передаю массив символов. а мне нужно передать сначала целое потом массив символов потом опять целое итд.

    сервак просит как же я могу отказать ((*
     
  16. Smapt

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

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    Как поместиь на форму Gif анимашку используя WinApi
     
  17. P(i)n*Fl0p1

    P(i)n*Fl0p1 Elder - Старейшина

    Joined:
    19 Dec 2006
    Messages:
    157
    Likes Received:
    35
    Reputations:
    9
    У меня есть на компе книжка самоучитель по с++,решил не заморачиваться читая 800 страниц с монитора купить эту книгу...купил.в книге в которой на компе не написано что надо использовать std::к cout,cin,endl, а в книжке печатной я смотрю и вижу во всех примерах этот std::,неужто без него нельзя обойтись просто написав using namespace std в самом начале?
    или вообще не писать в книжке(печатной)написано что обязательно так как это стандарт ANSI..раньше писал без std:: все было норм,а сейчас я прям в недоумении..можно обойтись без этого? :confused: :rolleyes:
    извиние если вопрос глупый..
     
  18. echobyte

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

    Joined:
    7 Mar 2008
    Messages:
    463
    Likes Received:
    190
    Reputations:
    50
    ну using namespace std этож все-таки новый стандарт

    вобще я не люблю читать книжки по программированию в pdf.. куча ошибок почти везде(.. но чаще всего других вариантов просто нет
     
  19. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    неужели?

    Можно, но не нужно. namespace'ы для того и сделали, чтоб разделять имена по-нормальному, а ты обратно их в кучу кидаешь
     
  20. thetuk

    thetuk New Member

    Joined:
    22 Feb 2008
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    А ты знаешь как поместить статическую?
     
Thread Status:
Not open for further replies.