屏幕录像专家exe视频批量翻录成视频avi格式
笔者下载过一些视频,全部是屏幕录像专家录制的exe视频,这些视频没有密码,可以顺利打开看看。
有一日想把这些视频转换成wmv格式放到手机上查看。一个目录下有那么大exe视频。一个个转特别麻烦。
后来想到用windows api发送消息操作屏幕录像专家菜单来转换视频。
程序使用方法:
1 安装一个破解版的 屏幕录像专家。勾选所有 “是的,以后不再提示”
2 把下面的代码编译成exe放到exe视频当前目录或者放到屏幕录像专家上级目录也可以。
3 打开屏幕录像专家,把文件夹往编译好哦screenrecoder.exe上面拖,或者把文件夹往screenrecoder.exe上拖都可以。
他会打开时自动录制。播放结束将会生成一个视频。
ScreenRecoder.cs
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions; namespace RecoderScreen
{
internal class Program
{
public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam); public delegate bool EnumChildWindowsProc(IntPtr hwnd, int lParam); private delegate bool EventHandler(Program.CtrlType sig); private enum CtrlType
{
CTRL_C_EVENT,
CTRL_BREAK_EVENT,
CTRL_CLOSE_EVENT,
CTRL_LOGOFF_EVENT = ,
CTRL_SHUTDOWN_EVENT
} private const int F2 = ; private const int WM_CHAR = ; private const int WM_SYSKEYDOWN = ; private const int WM_SYSKEYUP = ; private const int WM_SYSCHAR = ; private const int WM_KEYDOWN = ; private const int WM_KEYUP = ; private const int WM_HOTKEY = ; private const int WM_COMMAND = ; private const int WM_CLOSE = ; private const int WM_SYSCOMMAND = ; private const int WM_GETTEXT = ; private const int WM_GETTEXTLENGTH = ; private const int WM_SETTEXT = ; private const int WM_SETTINGCHANGE = ; private const int SW_HIDE = ; private const int SW_SHOW = ; private static Program.EventHandler _handler; private static bool eventHandled = false; private static int elapsedTime = ; private static Queue<string> fifo = null; [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("User32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName); [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, uint hwndChildAfter, string lpszClass, string lpszWindow); [DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern int GetWindowTextLength(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern int GetWindowText(IntPtr hWnd, StringBuilder strText, int maxCount); [DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")]
public static extern int SetActiveWindow(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); [DllImport("user32.dll")]
public static extern long EnumChildWindows(IntPtr hWndParent, Program.EnumChildWindowsProc lpEnumFunc, long lParam); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetParent(IntPtr hWnd); [DllImport("user32.dll")]
public static extern bool EnumWindows(Program.EnumWindowsProc enumProc, IntPtr lParam); [DllImport("user32.dll")]
public static extern IntPtr GetMenu(IntPtr hwnd); [DllImport("user32.dll")]
public static extern IntPtr GetSubMenu(IntPtr hMenu, int nPos); [DllImport("user32.dll")]
public static extern IntPtr GetMenuItemID(IntPtr hMenu, int nPos); [DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam); [DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage2(IntPtr hWnd, uint Msg, IntPtr wParam, string lParam); [DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage2(IntPtr hWnd, int Msg, IntPtr wParam, string lParam); [DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam); [DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr SendMessage(int hWnd, int Msg, int wparam, int lparam); [DllImport("User32.dll")]
public static extern int PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern int PostMessage2(IntPtr hWnd, int Msg, int wParam, string lParam); public static IEnumerable<IntPtr> FindWindowsWithText(string titleText)
{
return Program.FindWindows((IntPtr wnd, IntPtr param) => Program.GetWindowText(wnd).Contains(titleText));
} public static IEnumerable<IntPtr> FindWindows(Program.EnumWindowsProc filter)
{
IntPtr zero = IntPtr.Zero;
List<IntPtr> windows = new List<IntPtr>();
Program.EnumWindows(delegate(IntPtr wnd, IntPtr param)
{
if (filter(wnd, param))
{
windows.Add(wnd);
}
return true;
}, IntPtr.Zero);
return windows;
} public static string GetWindowText(IntPtr hWnd)
{
int windowTextLength = Program.GetWindowTextLength(hWnd);
string result;
if (windowTextLength > )
{
StringBuilder stringBuilder = new StringBuilder(windowTextLength + );
Program.GetWindowText(hWnd, stringBuilder, stringBuilder.Capacity);
result = stringBuilder.ToString();
}
else
{
result = string.Empty;
}
return result;
} [DllImport("Kernel32")]
private static extern bool SetConsoleCtrlHandler(Program.EventHandler handler, bool add); private static bool Handler(Program.CtrlType sig)
{
switch (sig)
{
case Program.CtrlType.CTRL_C_EVENT:
case Program.CtrlType.CTRL_BREAK_EVENT:
case Program.CtrlType.CTRL_CLOSE_EVENT:
case (Program.CtrlType):
case (Program.CtrlType):
case Program.CtrlType.CTRL_LOGOFF_EVENT:
case Program.CtrlType.CTRL_SHUTDOWN_EVENT:
return false;
}
return false;
} [DllImport("kernel32.dll")]
private static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private static void Main(string[] args)
{
if (args.Length != )
{
if (File.Exists(args[]))
{
Program.function(args[]);
}
else if (Directory.Exists(args[]))
{
string[] files = Program.getFiles(args[]);
if (files.Length != )
{
Program.fifo = new Queue<string>(files);
Program.function(Program.fifo.Dequeue());
}
}
}
} private static void function(string file)
{
string tmpDir = string.Empty;
string orginalDir = string.Empty;
string destFileName = string.Empty;
if (string.IsNullOrEmpty(file))
{
Console.WriteLine("请把要录制的程序拖进来");
Console.Read();
}
else
{
orginalDir = file.Substring(, file.LastIndexOf("\\"));
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 文件名 file :{1} orginalDir:{2}", DateTime.Now, file, orginalDir));
IntPtr hwndApplication = Program.FindWindow("TMainForm", null);
string windowText = Program.GetWindowText(hwndApplication);
if (hwndApplication == IntPtr.Zero || !windowText.Contains("屏幕录像专家"))
{
Console.WriteLine("屏幕录像专家没有启动");
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 屏幕录像专家没有启动", DateTime.Now));
}
else
{
Program.SetActiveWindow(hwndApplication);
Program.SetForegroundWindow(hwndApplication);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 激活屏幕录像专家并设置为活动状态", DateTime.Now));
IntPtr consoleWindow = Program.GetConsoleWindow();
Program.ShowWindow(consoleWindow, );
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 控制台:0x{1:X}已经隐藏!", DateTime.Now, consoleWindow.ToInt32()));
IntPtr hwndParent = Program.FindWindowEx(hwndApplication, 0u, "TPageControl", null);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] TPageControl:0x{1:X}", DateTime.Now, hwndParent.ToInt32()));
IntPtr hwndParent2 = Program.FindWindowEx(hwndParent, 0u, "TTabSheet", "录像模式 ");
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] |-->TTabSheet[录像模式]:0x{1:X}", DateTime.Now, hwndParent2.ToInt32()));
IntPtr hwndParent3 = Program.FindWindowEx(hwndParent2, 0u, "TPageControl", null);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] |---->TPageControl:0x{1:X}", DateTime.Now, hwndParent3.ToInt32()));
IntPtr hWndParent = Program.FindWindowEx(hwndParent3, 0u, "TTabSheet", "基本设置");
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] |------>TTabSheet[基本设置]:0x{1:X}", DateTime.Now, hWndParent.ToInt32()));
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 开始枚举TTabSheet[基本设置]子窗体", DateTime.Now));
Program.EnumChildWindows(hWndParent, delegate(IntPtr hWnd, int lParam)
{
StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder2 = new StringBuilder();
string windowText2 = Program.GetWindowText(hWnd);
Program.GetClassName(hWnd, stringBuilder2, );
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] class:{1} text:{2}", DateTime.Now, stringBuilder2, windowText2));
if (stringBuilder2.ToString() == "TEdit")
{
int num = Program.SendMessage(hWnd, , , );
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 发送WM_GETTEXTLENGTH消息到TEdit:0x{1:X}, message: 0,0", DateTime.Now, hWnd.ToInt32()));
if (num > )
{
stringBuilder = new StringBuilder(num + );
Program.SendMessage(hWnd, 13u, stringBuilder.Capacity, stringBuilder);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 发送WM_GETTEXT消息到TEdit:0x{1:X}, message:{2}", DateTime.Now, hWnd.ToInt32(), stringBuilder));
string text = stringBuilder.ToString();
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] class:TEdit title:{1} WM_GETTEXTLENGTH:{2}", DateTime.Now, text, num));
if (text.Contains("\\"))
{
tmpDir = text;
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] tmpDir:{1}", DateTime.Now, tmpDir));
}
if (!text.Contains("\\") && !Regex.IsMatch(text, "^\\d{1,}$"))
{
string[] array = file.Split(new string[]
{
"\\",
"."
}, StringSplitOptions.None);
string text2 = array[array.Length - ];
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 删除临时文件:{1}", DateTime.Now, tmpDir + "\\" + destFileName));
if (File.Exists(tmpDir + "\\" + destFileName))
{
File.Exists(tmpDir + "\\" + destFileName);
}
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] destFile:{1}", DateTime.Now, text2));
destFileName = text2 + ".avi";
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] destFileName:{1}", DateTime.Now, destFileName));
Program.SendMessage2(hWnd, , IntPtr.Zero, text2);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 发送WM_SETTEXT消息到TEdit:0x{1:X}, message:{2}", DateTime.Now, hWnd.ToInt32(), text2));
Program.SendMessage(hWnd, , , );
}
}
}
return true;
}, 0L);
Program.PostMessage(hwndApplication, , , );
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] [开始录制]发送WM_HOTKEY消息到TMainForm:0x{1:X}, message:0,{2}", DateTime.Now, hwndApplication.ToInt32(), ));
Process process = new Process();
process.StartInfo.FileName = file;
process.StartInfo.CreateNoWindow = true;
process.EnableRaisingEvents = true;
process.Exited += delegate(object o, EventArgs e)
{
Program.SendMessage(hwndApplication, , , );
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] [录制结束]发送WM_HOTKEY消息到TMainForm:0x{1:X}, message:0,{2}", DateTime.Now, hwndApplication.ToInt32(), ));
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 删除上一次生成的文件:{1}", DateTime.Now, orginalDir + "\\" + destFileName));
if (tmpDir != orginalDir + "\\")
{
if (File.Exists(orginalDir + "\\" + destFileName))
{
File.Delete(orginalDir + "\\" + destFileName);
}
File.Move(tmpDir + "\\" + destFileName, orginalDir + "\\" + destFileName);
}
if (Program.fifo != null && Program.fifo.Count > )
{
Program.function(Program.fifo.Dequeue());
}
else
{
Program.eventHandled = true;
}
};
Program._handler = (Program.EventHandler)Delegate.Combine(Program._handler, new Program.EventHandler(delegate(Program.CtrlType sig)
{
Program.PostMessage(hwndApplication, , , );
return Program.Handler(sig);
}));
Program.SetConsoleCtrlHandler(Program._handler, true);
try
{
process.Start();
}
catch (Exception ex)
{
Console.WriteLine("{0} {1}", ex.Message, ex.Data);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] error:{1}\r\n{2}", DateTime.Now, ex.Message, ex.Data));
}
IntPtr value = Program.FindWindow("TPlayForm", null);
if (value == IntPtr.Zero)
{
Console.WriteLine("录像启动失败!");
}
else
{
Console.WriteLine("正在录制:{0}", file);
Program.Log(string.Format("[{0:yyyy-MM-dd HH:mm:ss fff}] 正在录制:{1}", DateTime.Now, file));
while (!Program.eventHandled)
{
Program.elapsedTime += ;
}
}
}
}
} private static void Log(string LogString)
{
using (StreamWriter streamWriter = new StreamWriter(Environment.CurrentDirectory + "\\log.txt", true))
{
streamWriter.WriteLine(LogString);
}
} private static string[] getFiles(string dir)
{
return Directory.GetFiles(dir, "*.exe", SearchOption.TopDirectoryOnly);
}
}
}
这是生成的一些日志
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 屏幕录像专家没有启动
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 屏幕录像专家没有启动
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 屏幕录像专家没有启动
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 激活屏幕录像专家并设置为活动状态
[-- :: ] 控制台:0x3403FA已经隐藏!
[-- :: ] TPageControl:0x150828
[-- :: ] |-->TTabSheet[录像模式]:0x120824
[-- :: ] |---->TPageControl:0x1807D0
[-- :: ] |------>TTabSheet[基本设置]:0x80802
[-- :: ] 开始枚举TTabSheet[基本设置]子窗体
[-- :: ] class:TRadioButton text:LXE
[-- :: ] class:TRadioButton text:WMV
[-- :: ] class:TCheckBox text:录透明窗体(光标会闪)
[-- :: ] class:TCheckBox text:录制视频
[-- :: ] class:TRadioButton text:EXE
[-- :: ] class:TRadioButton text:AVI
[-- :: ] class:TCheckBox text:自设信息
[-- :: ] class:TCheckBox text:直接录制生成
[-- :: ] class:TGroupBox text:录制频率(帧率)
[-- :: ] class:TCheckBox text:帧率过大,自动停止录制
[-- :: ] class:TCheckBox text:自动
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0x140788, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0x140788, message:
[-- :: ] class:TEdit title: WM_GETTEXTLENGTH:
[-- :: ] class:TCheckBox text:同时录制光标
[-- :: ] class:TCheckBox text:同时录制声音
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0xB02AE, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0xB02AE, message:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\
[-- :: ] class:TEdit title:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\ WM_GETTEXTLENGTH:
[-- :: ] tmpDir:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0x1E009C, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0x1E009C, message:录像1
[-- :: ] class:TEdit title:录像1 WM_GETTEXTLENGTH:
[-- :: ] 删除临时文件:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\\
[-- :: ] destFile:21b
[-- :: ] destFileName:21b.avi
[-- :: ] 发送WM_SETTEXT消息到TEdit:0x1E009C, message:21b
[-- :: ] [开始录制]发送WM_HOTKEY消息到TMainForm:0x1205D4, message:,
[-- :: ] 正在录制:E:\21b.exe
[-- :: ] [录制结束]发送WM_HOTKEY消息到TMainForm:0x1205D4, message:,
[-- :: ] 删除上一次生成的文件:E:\21b.avi
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 激活屏幕录像专家并设置为活动状态
[-- :: ] 控制台:0xB0904已经隐藏!
[-- :: ] TPageControl:0xA0892
[-- :: ] |-->TTabSheet[录像模式]:0x60938
[-- :: ] |---->TPageControl:0x28079E
[-- :: ] |------>TTabSheet[基本设置]:0x40956
[-- :: ] 开始枚举TTabSheet[基本设置]子窗体
[-- :: ] class:TRadioButton text:LXE
[-- :: ] class:TRadioButton text:WMV
[-- :: ] class:TCheckBox text:录透明窗体(光标会闪)
[-- :: ] class:TCheckBox text:录制视频
[-- :: ] class:TRadioButton text:EXE
[-- :: ] class:TRadioButton text:AVI
[-- :: ] class:TCheckBox text:自设信息
[-- :: ] class:TCheckBox text:直接录制生成
[-- :: ] class:TGroupBox text:录制频率(帧率)
[-- :: ] class:TCheckBox text:帧率过大,自动停止录制
[-- :: ] class:TCheckBox text:自动
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0x7602F4, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0x7602F4, message:
[-- :: ] class:TEdit title: WM_GETTEXTLENGTH:
[-- :: ] class:TCheckBox text:同时录制光标
[-- :: ] class:TCheckBox text:同时录制声音
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0x1A078C, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0x1A078C, message:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\
[-- :: ] class:TEdit title:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\ WM_GETTEXTLENGTH:
[-- :: ] tmpDir:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0x40958, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0x40958, message:录像1
[-- :: ] class:TEdit title:录像1 WM_GETTEXTLENGTH:
[-- :: ] 删除临时文件:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\\
[-- :: ] destFile:21b
[-- :: ] destFileName:21b.avi
[-- :: ] 发送WM_SETTEXT消息到TEdit:0x40958, message:21b
[-- :: ] [开始录制]发送WM_HOTKEY消息到TMainForm:0x30032A, message:,
[-- :: ] 正在录制:E:\21b.exe
[-- :: ] [录制结束]发送WM_HOTKEY消息到TMainForm:0x30032A, message:,
[-- :: ] 删除上一次生成的文件:E:\21b.avi
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 激活屏幕录像专家并设置为活动状态
[-- :: ] 控制台:0x1905D4已经隐藏!
[-- :: ] TPageControl:0x31032A
[-- :: ] |-->TTabSheet[录像模式]:0x5094E
[-- :: ] |---->TPageControl:0x50952
[-- :: ] |------>TTabSheet[基本设置]:0xD0774
[-- :: ] 开始枚举TTabSheet[基本设置]子窗体
[-- :: ] class:TRadioButton text:LXE
[-- :: ] class:TRadioButton text:WMV
[-- :: ] class:TCheckBox text:录透明窗体(光标会闪)
[-- :: ] class:TCheckBox text:录制视频
[-- :: ] class:TRadioButton text:EXE
[-- :: ] class:TRadioButton text:AVI
[-- :: ] class:TCheckBox text:自设信息
[-- :: ] class:TCheckBox text:直接录制生成
[-- :: ] class:TGroupBox text:录制频率(帧率)
[-- :: ] class:TCheckBox text:帧率过大,自动停止录制
[-- :: ] class:TCheckBox text:自动
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0x1905D2, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0x1905D2, message:
[-- :: ] class:TEdit title: WM_GETTEXTLENGTH:
[-- :: ] class:TCheckBox text:同时录制光标
[-- :: ] class:TCheckBox text:同时录制声音
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0xD08AE, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0xD08AE, message:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\
[-- :: ] class:TEdit title:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\ WM_GETTEXTLENGTH:
[-- :: ] tmpDir:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\
[-- :: ] class:TEdit text:
[-- :: ] 发送WM_GETTEXTLENGTH消息到TEdit:0xE07E0, message: ,
[-- :: ] 发送WM_GETTEXT消息到TEdit:0xE07E0, message:录像1
[-- :: ] class:TEdit title:录像1 WM_GETTEXTLENGTH:
[-- :: ] 删除临时文件:D:\Program Files\tlxsoft\屏幕录像专家 共享版 V2015\ls\\
[-- :: ] destFile:21b
[-- :: ] destFileName:21b.avi
[-- :: ] 发送WM_SETTEXT消息到TEdit:0xE07E0, message:21b
[-- :: ] [开始录制]发送WM_HOTKEY消息到TMainForm:0x50946, message:,
[-- :: ] 正在录制:E:\21b.exe
[-- :: ] [录制结束]发送WM_HOTKEY消息到TMainForm:0x50946, message:,
[-- :: ] 删除上一次生成的文件:E:\21b.avi
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 屏幕录像专家没有启动
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 屏幕录像专家没有启动
[-- :: ] 文件名 file :E:\21b.exe orginalDir:E:
[-- :: ] 屏幕录像专家没有启动
屏幕录像专家exe视频批量翻录成视频avi格式的更多相关文章
- 屏幕录像专家2014 v0318 免费版
软件名称: 屏幕录像专家2014软件语言: 简体中文授权方式: 免费试用运行环境: Win8 / Win7 / Vista / WinXP软件大小: 7.9MB图片预览: 软件简介:屏幕录像专家201 ...
- 屏幕录像专家V7.5(完美破解版,无水印)下载
分享一个屏幕录像工具.屏幕录像专家V7.5(完美破解版,无水印).经测试可破解使用. 破解注册 点击安装.EXE,安装软件. 点击安装好的屏幕录像专家,会给你一个机器码,要你注册,复制下这个机器码(下 ...
- win7 audio repeater 虚拟声卡 屏幕录像专家
- 录制Android屏幕软件——屏幕录像专家
本文不是技术文章,今天分享下录制屏幕的软件.这个软件的效果还是不错的,前提是需要Root.软件名字:屏幕录像专家 来源网址:http://www.mumayi.com/android-350180.h ...
- 韩梦飞沙-屏幕录像专家 win10 含注册机
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 韩梦飞沙-屏幕录像专家 win10 含注册机 百度云盘下载地址:https://pan. ...
- 屏幕录像大师如何把LXE文件转换为EXE文件
EXE 和 LXE 实际上是同一种格式,文件大小完全相同,可以快速相互转换.区别是EXE复制到其它电脑上可以直接播放,LXE需要播放器播放,我们提供LXE播放器,而且是完全免费的.EXE的好处是复制到 ...
- Linux下使用RecordMyDesktop进行屏幕录像
近期我们在评估给用户提供视频教程的可能性,以此来展示某些用视频才能更好表达的教程.在挖掘这个问题的时候,我们发现极丰富的可用于屏幕录像的工具.这些程序大体上特性的区别有:视频质量,性能,兼容性.这在此 ...
- Ubuntu下屏幕录像、后期处理不完全攻略
提要 如果要做成果展示或者效果演示,通常需要录取屏幕生成视频文件,在windows中我们可以用屏幕录像专家在录像, vegas 来做后期处理,Ubuntu可以么? 答案时当然可以!虽然第一次用觉得有点 ...
- MP4文件批量转码成MP3
需求背景:最近为了学python爬虫,在论坛里找了不少视频教程,非常棒.但有时看视频不方便,就想着能否把视频批量转码成音频,这样在乘坐地铁公交的时候也能学习了. 解决路径:有了需求,我首先在论坛里搜了 ...
随机推荐
- 长沙雅礼中学集训-------------------day1(内含day0)
day0: 首先,请允许我吐槽一下: 1.那些一个人住一个标准房的人您们真的是#@**¥&%……#*()%……*()@Q$&. 2.感谢那些一个人住一个标准间的人,要不然我们也找不到这 ...
- 【Linux_Unix系统编程】chapter5 深入探究文件IO
Chapter5 深入探究文件I/O 本章节将介绍另一个与文件操作相关的系统调用:多用途的fcntl(),并展示其应用之一读取和设置打开文件的状态标志. 5.1 原子操作和竞争条件 所有系统调用都是以 ...
- php parse_str() 函数
php parse_str() 函数把查询字符串解析到变量中,主要用于页面之间传值(参数).本文章向码农介绍php parse_str() 函数的使用方法,感兴趣的码农可以参考一下. 定义和用法 pa ...
- linux主机555、644、666、755、777权限详解
linux主机555.644.666.755.777权限详解 发表时间:2014-06-03 05:07 来源:未知 分类:其它代码 作者:岑溪网站开发 点击:次 linux主机555.644.666 ...
- Javascript获取数组中的最大值和最小值的方法汇总
比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧 比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...
- hibernate vs ibatis
主要通过 灵活性,性能,开发速度 三个角度来看 1.ibatis非常简单易学,hibernate相对较复杂,门槛较高. 2.二者都是比较优秀的开源产品 3.当系统属于二次开发,无法对数据库结构做到 ...
- JAVA Spring JavaBean 引入 JavaBean ( 外部引用, 内部定义, 级联属性 )
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 【Javascript Demo】遮罩层和百度地图弹出层简单实现
其实想做的就是显示百度地图的弹出层,现在已经简单实现了.示例和代码如下,点击按钮可以看到效果: 1.示例: 2.代码: <!DOCTYPE html PUBLIC "-//W3C/ ...
- leetcode754
class Solution { public: int reachNumber(int target) { // 理解这题的意思 这题就好做了 // 分析 首先考虑一种比较极端的情况 即一直向正方向 ...
- objective C, parse json时注意事项
例: dict为从API请求返回的json调用 NSJSONSerialization JSONObjectWithData:方法得到的NSDictionary实例. 当执行以下语句时linkStri ...