关于用记事本播放视频的若干问题

「已注销」 2013-07-24 02:23:44
很多人说记事本播放视频很牛B,其实实现很简单的,只要拦截掉原先的消息循环,然后加入自己的消息循环就可以了。这样的话完全可以自己重写记事本整个事件流程,不管什么功能都可以添加上去
关于菜单是用eXeScope修改的。你们可以自己好好摸索下,OD修改消息循环的时候只需要有点汇编知识就够了。
最后我修改的记事本是动态加载dll的,只要本目录有test.dll既会被加载,如果有导出函数WndProc的话,就会当做最初的消息循环调用。实现效果如下:





注意,程序有可能被杀毒软件报毒,属正常现象,比较把MS的签名搞坏掉了,修改了记事本的二进制数据。
程序下载地址:http://download.csdn.net/detail/jha334201553/5807285
...全文
789 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyijk 2015-08-05
  • 打赏
  • 举报
回复
虽然现在回帖有些不合时宜 不过自己的能力似乎还是无法解决这个问题 特此求助楼主 我用LordPE把写好的dll添加到了exe的输入表然后od反汇编,在RegistClassEx断下后堆栈中找到了WndProc的入口是notepad.1003429然后大概和你一样把mov改成了jmp 100874c (100874c是空余空间我写的是 0100874c call dword prt [<&test.WndProc>] 0100875a jmp 0100342e(这个地址也就是之前103429的下一个命令)) 这样修改后为什么程序无法运行求解
nbabn 2013-08-29
  • 打赏
  • 举报
回复
牛, 话说还有人用示波器玩俄罗斯方块的。
  • 打赏
  • 举报
回复
收起来慢慢看。
modyaj 2013-08-28
  • 打赏
  • 举报
回复
yangyijk 2013-08-28
  • 打赏
  • 举报
回复
厉害
  • 打赏
  • 举报
回复
不要太帅哟,亲
「已注销」 2013-08-28
  • 打赏
  • 举报
回复
引用 7 楼 Peruja 的回复:
请教一下,为什么在我的电脑上播放的时候有音频但没有视频?xp系统vc6.0运行
这问题好有难度哦,在我虚拟机上xp,win7 x64都是可以播放的撒~ 后来不知道改了什么,代码:
void PlayAVI(HWND hWnd)
{
	TCHAR GetAviFile[MAX_PATH] = {0};
	TCHAR FileName[MAX_PATH*2] = {0};
	OPENFILENAME ofn = {sizeof(OPENFILENAME)};
	ofn.hwndOwner = hWnd;
	ofn.lpstrFilter =  TEXT("Text Files(*.avi)\0*.avi\0Text Files(*.mp3)\0*.mp3\0\0");
	ofn.lpstrFile = FileName;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrFileTitle = GetAviFile;
	ofn.nMaxFileTitle = MAX_PATH;
	ofn.Flags = OFN_HIDEREADONLY;
	ofn.lpstrDefExt = TEXT("avi");
	if( !GetOpenFileName(&ofn) )
	{
//		_tcscpy(GetAviFile, TEXT("C:\\Users\\Administrator\\Desktop\\Findfile.avi"));
		MessageBox(NULL, TEXT("打开文件错误"), NULL, 0);
		return ;
	}
	// mciCmd = "open " & file_name & " Type avivideo Alias avi parent " & Picture1.hwnd & " Style child" 
    // mciSendString mciCmd, 0, 0, 0 
//	KillTimer(hWnd, 1);
	mciSendString(TEXT("close  movie"), NULL, 0, 0);
	SetWindowText(hWnd, FileName);
	GetShortPathName(FileName, GetAviFile, MAX_PATH);
	wsprintf(FileName, TEXT("open %s Type MPEGVideo Alias movie parent %u Style child"), GetAviFile, hWnd);

	mciSendString(FileName, NULL, 0, 0);
	mciSendString("setaudio  movie  volume  to  300", NULL ,0 , 0);

//	mciSendString(TEXT("play  avi repeat"), NULL, 0, 0);
	mciSendString(TEXT("play  movie  repeat"), NULL, 0, 0);
}
max_min_ 2013-08-28
  • 打赏
  • 举报
回复
很牛叉的样子哦!
Peruja 2013-08-28
  • 打赏
  • 举报
回复
引用 楼主 jha334201553 的回复:
很多人说记事本播放视频很牛B,其实实现很简单的,只要拦截掉原先的消息循环,然后加入自己的消息循环就可以了。这样的话完全可以自己重写记事本整个事件流程,不管什么功能都可以添加上去 关于菜单是用eXeScope修改的。你们可以自己好好摸索下,OD修改消息循环的时候只需要有点汇编知识就够了。 最后我修改的记事本是动态加载dll的,只要本目录有test.dll既会被加载,如果有导出函数WndProc的话,就会当做最初的消息循环调用。实现效果如下: 注意,程序有可能被杀毒软件报毒,属正常现象,比较把MS的签名搞坏掉了,修改了记事本的二进制数据。 程序下载地址:http://download.csdn.net/detail/jha334201553/5807285
请教一下,为什么在我的电脑上播放的时候有音频但没有视频?xp系统vc6.0运行
「已注销」 2013-08-28
  • 打赏
  • 举报
回复
引用 15 楼 zhao4zhong1 的回复:
有人还在80x25x16色纯文本界面下播放视频呢!
想表达啥?
赵4老师 2013-08-28
  • 打赏
  • 举报
回复
有人还在80x25x16色纯文本界面下播放视频呢!
Peruja 2013-08-28
  • 打赏
  • 举报
回复
引用 9 楼 jha334201553 的回复:
[quote=引用 7 楼 Peruja 的回复:] 请教一下,为什么在我的电脑上播放的时候有音频但没有视频?xp系统vc6.0运行
这问题好有难度哦,在我虚拟机上xp,win7 x64都是可以播放的撒~ 后来不知道改了什么,代码:
void PlayAVI(HWND hWnd)
{
	TCHAR GetAviFile[MAX_PATH] = {0};
	TCHAR FileName[MAX_PATH*2] = {0};
	OPENFILENAME ofn = {sizeof(OPENFILENAME)};
	ofn.hwndOwner = hWnd;
	ofn.lpstrFilter =  TEXT("Text Files(*.avi)\0*.avi\0Text Files(*.mp3)\0*.mp3\0\0");
	ofn.lpstrFile = FileName;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrFileTitle = GetAviFile;
	ofn.nMaxFileTitle = MAX_PATH;
	ofn.Flags = OFN_HIDEREADONLY;
	ofn.lpstrDefExt = TEXT("avi");
	if( !GetOpenFileName(&ofn) )
	{
//		_tcscpy(GetAviFile, TEXT("C:\\Users\\Administrator\\Desktop\\Findfile.avi"));
		MessageBox(NULL, TEXT("打开文件错误"), NULL, 0);
		return ;
	}
	// mciCmd = "open " & file_name & " Type avivideo Alias avi parent " & Picture1.hwnd & " Style child" 
    // mciSendString mciCmd, 0, 0, 0 
//	KillTimer(hWnd, 1);
	mciSendString(TEXT("close  movie"), NULL, 0, 0);
	SetWindowText(hWnd, FileName);
	GetShortPathName(FileName, GetAviFile, MAX_PATH);
	wsprintf(FileName, TEXT("open %s Type MPEGVideo Alias movie parent %u Style child"), GetAviFile, hWnd);

	mciSendString(FileName, NULL, 0, 0);
	mciSendString("setaudio  movie  volume  to  300", NULL ,0 , 0);

//	mciSendString(TEXT("play  avi repeat"), NULL, 0, 0);
	mciSendString(TEXT("play  movie  repeat"), NULL, 0, 0);
}
[/quote] 用这段代码还是看不到视频但是听得到音频啊,令人费解
氰客 2013-07-24
  • 打赏
  • 举报
回复
「已注销」 2013-07-24
  • 打赏
  • 举报
回复
引用 4 楼 adlay 的回复:
看起确实很帅, 不过用途是神马....? 不会是为了在记事本中看电影撒
做个科普而已,顺便鼓励下新人,不要被表面吓唬到了
www_adintr_com 2013-07-24
  • 打赏
  • 举报
回复
看起确实很帅, 不过用途是神马....? 不会是为了在记事本中看电影撒
Exaybachay 2013-07-24
  • 打赏
  • 举报
回复
图灵狗 2013-07-24
  • 打赏
  • 举报
回复
水平不流 2013-07-24
  • 打赏
  • 举报
回复
支持一下、~~

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧