有時候需要將我們常見的win全路徑中反斜杠為正斜杠,每次用記事本,編輯替換非常麻煩,于是寫了這個工具,能自動修改剪貼板中的數據,只需要運行一下即可。
實現效果,將類似于下面的路徑:
C:\Users\autumoon\Desktop\ChangeSlash\自動切換剪貼板中的斜杠.txt
更改成:
C:/Users/autumoon/Desktop/ChangeSlash/自動切換剪貼板中的斜杠.txt
直接上代碼:
新建一個終端程序即可,后面會更改成窗口以實現隱藏黑框的效果。
#include <windows.h>
#include <atlstr.h>CString ConvertBackslashToSlash(CString& strPath)
{for (int i = 0; i < strPath.GetLength(); ++i){if (strPath[i] == _T('\\')){strPath.SetAt(i, _T('/'));}}return strPath;
}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{char* buffer = nullptr;CString strFromClipboard;if (OpenClipboard(NULL)){HANDLE hData = GetClipboardData(CF_TEXT);char* buffer = (char*)GlobalLock(hData);strFromClipboard = buffer;int nLen = strFromClipboard.GetLength();if (nLen > 0){if (strFromClipboard.Find(_T(":\\")) != -1){EmptyClipboard();ConvertBackslashToSlash(strFromClipboard);size_t cbStr = (strFromClipboard.GetLength() + 1) * sizeof(TCHAR);HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);memcpy_s(GlobalLock(hData), cbStr, strFromClipboard.LockBuffer(), cbStr);strFromClipboard.UnlockBuffer();UINT nFormat = (sizeof(TCHAR) == sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT);::SetClipboardData(nFormat, hData);}}GlobalUnlock(hData);CloseClipboard();}return 0;
}
下面是隱藏黑窗口的方法:
要將命令行程序改為窗口程序并隱藏黑框,可以采用下面的方法:
使用WinMain入口點(推薦)
- 將main改為WinMain
- 在項目屬性中設置子系統為Windows
- 添加/SUBSYSTEM:WINDOWS鏈接器選項