偶然間發現 好軟體, ShareX 可以抓取畫面, 也可以錄螢幕畫面. 最驚訝的是它還是open source, 可以拿到source code.
記錄過程遇到的問題 (14.1 版直接沒問題, 可以compile and finish)
1. download: 使用shareX Github 選code "Downlad ZIP" 竟會讓chrome 當掉.
"https://github.com/ShareX/ShareX.git" 使用 svn 可以download 成功. 共1.84G
2. 開啟 trunk/ShareX.sln (使用版本Visual studio 2019)
有一些 .net 版本要修正的問題. 點選, 試試update 後, project 變成active 就有成功.
# 細節沒有拍下來, 請自行測試 幾個選項, 可能還會update visual studio
3. 選"建置"--> "建置方案"
應該要有10 個成功才行.
但一開就遇到compile 的問題:
在Vault_ooo.cs 中, 將下面的initial 動作, 改為2個input, 這樣做功能沒有修好, 但compile 就可以往前了.
// Rfc2898DeriveBytes rfcDeriver = new Rfc2898DeriveBytes(key, salt, PBKDF2_ITERATIONS, HashAlgorithmName.SHA256);
// byte str
Rfc2898DeriveBytes rfcDeriver= new Rfc2898DeriveBytes("asdf",4);
4. 修改到10 個DLL, exe 都產生後就可以使用了,
### good luck
A.
接下來想使用Visual studio debug 我有興趣的code. 卻發現我設了斷點無法使用, 斷點有設定成功, 但是不能卻中斷不到?, 因為這是我第一次使用C#, 以為C# 還要做其他設定才能用
這卡我很久, 最後發現是ShareX 會常駐在背景. 我之前有執行 安裝版的SHAREX, 它沒有退出. 所以debug 這套在最前面就check 到有instance 在run , 就直接不啟動了
B. inline ASM (__asm)
想加入前幾篇文章提到的inline asm 的做法, 奇怪. compile 不能使用.
C# 及64bit 版本不能使用
C. 改成使用DLL.
1. 要使用64bit DLL
2. 要使用stdcall export , extern "C"
3. 使用端:
// private const string DLL_PATH = @"DllTEST.dll";
[DllImport(DLL_PATH, CallingConvention= CallingConvention.StdCall)]
public static extern bool XX(int a, int b);
D. 想拿到C# 的function point 當引數
C# 是中高階語言, 不提供, 所以只能使用DLL 解決
E. Inline asm 的替代方案,
1. 要使用virtual memory enable write and execute 的功能. 有空實作試試.
以上是使用 source code run shareX 所遇到的問題, 做的記錄! 以上
其他功能:
Capture 之後一, 可以直接做 Online OCR. 這也是我一直想找的功能, !!! 注意, OCR 功能是將影像往外傳, OCR 的結果傳回. 如果有機密請小心使用
重要進入點: entry
1. Screenshot.cs
CaptureRectangleNative()
可將 NativeMethods.BitBlt() 換掉
2. NativeMethods.cs
- 在 [DllImport("dwmapi.dll")] 斷落結束之後
private const string DLL_PATH = @"myDLL"; // DLL NAME
[DllImport(DLL_PATH, CallingConvention= CallingConvention.StdCall)]
public static extern bool swap(IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, CopyPixelOperation dwRop);
[DllImport(DLL_PATH)]
public static extern int fnForXX_YY(); // export function name
3. program.cs
可以加code 在這裡, 直接實驗.
# path : 我自己參考用
C:\Users\xxx\Desktop\ShareX.git\trunk
D:/sharex14.1
留言列表