- ½Ã½ºÅÛ À̹ÌÁö ¸®½ºÆ® °¡Á®¿À±â
- ¸®¼Ò½º¿¡¼ 256 Ä÷¯ ÀÌ»óÀÇ Animated Cursor ·ÎµåÇϱâ
- ÆÄÀÏ/µð·ºÅ丮 Á¸Àç ¿©ºÎ ¾Ë¾Æ³»±â
- ÆÄÀÏ Å©±â ¾Ë¾Æ³»±â
- ¼Ë´Ù¿î½Ã۱â
- Æú´õ ã¾Æº¸±â ´ëÈâ ¶ç¿ì±â
- µð·ºÅ丮/·¹Áö½ºÆ®¸® º¯°æ ¸ð´ÏÅ͸µÇϱâ
- HWND ¸¦ ÀÌ¿ëÇØ HINSTANCE ¾Ë¾Æ³»±â
1 ½Ã½ºÅÛ À̹ÌÁö ¸®½ºÆ® °¡Á®¿À±â
SHFILEINFO sfi;
ZeroMemory(&sfi, sizeof(SHFILEINFO));
HIMAGELIST hSystemImage = reinterpret_cast<HIMAGELIST>(
SHGetFileInfo("*.*", 0, &sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SYSICONINDEX)
); CSharp ȯ°æ¿¡¼ ½Ã½ºÅÛ À̹ÌÁö ¸®½ºÆ®¸¦ »ç¿ëÇϱâ À§Çؼ´Â ¾Æ·¡ÀÇ ¸µÅ©¸¦ Âü°í.
http://www.vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/SysImageList/article.asp
2 ¸®¼Ò½º¿¡¼ 256 Ä÷¯ ÀÌ»óÀÇ Animated Cursor ·ÎµåÇϱâ
±×³É ÆÄÀÏ¿¡¼ ·Îµå(LoadCursorFromFile)ÇÏ´Â °Ç µÇ´Âµ¥, ¸®¼Ò½º¿¡¼ ·ÎµåÇÏ´Â °Ç ¿ØÁö Àß ¾È µÈ´Ù. °á±¹ ¸®¼Ò½º ³»¿ëÀ» Àӽà ÆÄÀÏ¿¡´Ù ±â·ÏÇÑ ´ÙÀ½, ·ÎµåÇÏ´Â ¹æ¹ýÀ» ÅÃÇß´Ù.
HCURSOR LoadCursorFromResource(HINSTANCE instance, DWORD resourceId, const char* resourceType)
{
HRSRC hResource = FindResource(instance, MAKEINTRESOURCE(resourceId), resourceType);
if (!hResource)
return NULL;
HGLOBAL hGlobal = LoadResource(instance, hResource);
if (!hGlobal)
return NULL;
LPBYTE lockedBytes = reinterpret_cast<LPBYTE>(LockResource(hGlobal));
if (!lockedBytes)
return NULL;
char path[1024] = {0, };
GetTempPath(ARRAYSIZE(path), path);
char fileName[1024] = {0, };
GetTempFileName(path, "TempCursor", resourceId, fileName);
FILE* file = fopen(fileName, "wb");
if (!file)
return NULL;
fwrite(lockedBytes, SizeofResource(instance, hResource), 1, file);
fclose(file);
HCURSOR hCursor = LoadCursorFromFile(fileName);
DeleteFile(fileName);
return hCursor;
}
3 ÆÄÀÏ/µð·ºÅ丮 Á¸Àç ¿©ºÎ ¾Ë¾Æ³»±â
bool IsFileExist(const char* path)
{
DWORD attr = GetFileAttributes(path);
return (attr != INVALID_FILE_ATTRIBUTES) && ((attr & FILE_ATTRIBUTE_DIRECTORY) == 0);
}
bool IsDirectoryExist(const char* path)
{
DWORD attr = GetFileAttributes(path);
return (attr != INVALID_FILE_ATTRIBUTES) && (attr & FILE_ATTRIBUTE_DIRECTORY);
}
¾Æ´Ï¸é ±×³É ½© API¸¦ ÀÌ¿ëÇØµµ µÈ´Ù.
BOOL PathFileExists(LPCTSTR pszPath);
4 ÆÄÀÏ Å©±â ¾Ë¾Æ³»±â
int GetFileSize(const char* path)
{
WIN32_FILE_ATTRIBUTE_DATA fileInfo;
BOOL succeeded = GetFileAttributesEx(
path, GetFileExInfoStandard, reinterpret_cast<void*>(&fileInfo));
if (!succeeded)
return -1;
Assert(0 == fileInfo.nFileSizeHigh);
return static_cast<int>(fileInfo.nFileSizeLow);
} CreateFile + GetFileSize Á¶ÇÕµµ ÀÖ°í, fopen/fseek/ftell Á¶ÇÕµµ ÀÖ´Ù.
5 ¼Ë´Ù¿î½Ã۱â
ExitWindowsEx¶ó´Â API¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. ¾Æ·¡´Â MSDN¿¡ ÀÖ´Â »ùÇÃ. ºñ½ºÅ¸¿¡¼´Â InitiateShutdown¶ó´Â ÇÔ¼ö°¡ ÀÖ´Â ¸ð¾çÀε¥...
#include <Windows.h>
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return FALSE;
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(
NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(
hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED))
return FALSE;
return TRUE;
}
6 Æú´õ ã¾Æº¸±â ´ëÈâ ¶ç¿ì±â
std::string BrowseFolder(const char* title = NULL, HWND owner = NULL)
{
::OleInitialize(NULL);
BROWSEINFO bi;
::ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.ulFlags = BIF_USENEWUI;
bi.hwndOwner = owner;
bi.lpszTitle = title;
bool result = false;
char path[_MAX_PATH] = {0, };
LPITEMIDLIST idl = ::SHBrowseForFolder(&bi);
if (idl != NULL)
{
result = ::SHGetPathFromIDList(idl, path) != 0;
::CoTaskMemFree(idl);
}
::OleUninitialize();
return result ? std::string(path) : "";
} CppBuilder¿¡¼´Â SelectDirectory¶ó´Â ÇÔ¼ö¸¸ ´Þ¶û È£ÃâÇØÁÖ¸é ³¡Àε¥, ½à...
7 µð·ºÅ丮/·¹Áö½ºÆ®¸® º¯°æ ¸ð´ÏÅ͸µÇϱâ
ReadDirectoryChangesW
RegNotifyChangeKeyValue
µð·ºÅ丮 º¯°æ ¸ð´ÏÅ͸µÀº WindowsFileSystemMonitoring ÆäÀÌÁö¸¦ Âü°íÇϽöó.
8 HWND ¸¦ ÀÌ¿ëÇØ HINSTANCE ¾Ë¾Æ³»±â
HWND hWnd = GetForegroundWindow();
HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)