有时候需要将我们常见的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链接器选项