#pragma once #include "xbase.hpp" #include "kobject/kutil.hpp" #include "wobject/xaserver.hpp" #include "win32/win.hpp" using kutil = Hxsoft::XFrame::IXFUtil; extern "C" { void* WINAPI GetProcAddressW(HMODULE hModule, const char* lpText); } class xutil { public: static HCURSOR SetCursorWait() { return Hxsoft::XFrame::IXFUtil::SetCursorWait(); } static int RestoreCursor(HCURSOR hCursor) { return Hxsoft::XFrame::IXFUtil::RestoreCursor(hCursor); } static const wchar_t* GetUrlData(const wchar_t* url) { return kutil::GetUrlData((LPWSTR)url); } static bool HasCacheData(const wchar_t* url) { return kutil::HasCacheData((LPWSTR)url); } static void CacheUrlData(const wchar_t* url,const wchar_t* data) { return kutil::CacheUrlData((LPWSTR)url,(LPWSTR)data); } static int SaveToFile(xstring pFile,xstring pData,xstring ext, xstring pFilter, const LPTSTR pFileName=NULL) { return kutil::SaveToFile((LPWSTR)pFile.c_str(), (LPWSTR)pData.c_str(), (LPWSTR)ext.c_str(), (LPWSTR)pFileName); } static LPWSTR MD5(const wchar_t* pStr) { return kutil::MD5((LPWSTR)pStr); } static bool SmallImage(LPCTSTR lpszPathName, LPCTSTR lpszNewPathName, int width, int height, int flag=0) { return kutil::SmallImage(lpszPathName,lpszNewPathName,width,height,flag); } static LPWSTR OpenDialog(HWND Owner,const wchar_t* str) { return kutil::OpenDialog(Owner,(LPWSTR)str); } static LPTSTR FormatDecimalString(LPTSTR str, LPTSTR format, bool& bfree) { return Hxsoft::XUtil::FormatDecimalString(str, format, bfree); } public: static xstring GetModulePath() { wchar_t buf[255]; ::GetModuleFileNameW(nullptr, buf, 255); PathRemoveFileSpec(buf); return xstring(buf); } static xstring GetModuleTmpPath() { xstring tmp = GetModulePath() + L"\\Temp"; xaserver::CreateDirectory(tmp); return tmp; } static void* GetFuncPtr(const wchar_t* dll, const char* name) { void* fnAttachEvent = nullptr; HMODULE hModule = LoadLibraryW(dll); if (hModule)fnAttachEvent = ::GetProcAddressW(hModule, name); return fnAttachEvent; } };