aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 10335|回复: 5

flash全屏问题

[复制链接]

6

主题

123

回帖

1113

积分

四级会员

积分
1113
发表于 2013-1-8 11:18:16 | 显示全部楼层 |阅读模式
第一运行能全屏 但是只要  鼠标有动作 就全屏不了 有啥办法能一直全屏

  1. import win.flashInBox;

  2. /*去掉水印{{*/
  3. import process;
  4. VirtualProtectEx = ::Kernel32.api("VirtualProtectEx","bool(POINTER hProcess,addr lpAddress, INT dwSize, INT flNewProtect, INT &lpflOldProtect )");
  5. var prcs = process();  
  6. var pDrawDemoAddr = tonumber( win.flashInBox._dll.gethandle()  ) +  0x1000 + 0x25EE0;
  7. VirtualProtectEx( prcs.handle, pDrawDemoAddr,1,0x40/*_PAGE_EXECUTE_READWRITE*/  ,0);  
  8. prcs.writeString( pDrawDemoAddr,'\0' )
  9. prcs.free();
  10. /*}}*/

  11. //创建FLash透明窗口
  12. var flash = ..win.flashInBox( {text = "任务栏你好"} , true /*透明*/)

  13.   
  14. flash._form.fullscreen(true)


  15. //显示窗口
  16. flash.show()

  17. //In Box 可以直接自内存加载Flash
  18. flash.putMovie( $"\res\main.swf")




  19. win.loopMessage()
复制代码

29

主题

658

回帖

4138

积分

超级版主

积分
4138
发表于 2013-1-8 11:48:41 | 显示全部楼层

如果你指的是透明桌面,你鼠标点击其他窗口会退出全屏。
如果没有切换过程,可以不使用 fullscreen函数,自已写一句代码就可以实现全屏。
  1. flash._form.setPos(0,0, ..win.getScreen() )
复制代码
flash._form.fullscreen(true) 主要是用来实现全屏切换。
在其他程序激活是也会自动退出全屏,并恢复窗口状态。
如果你希望阻止自动退出,可以在窗口消息回调中阻止处理 _WM_ACTIVATEAPP(aardio最新版本处理了这个消息退出全屏),或者重写默认消息处理,如下:

  1. import win.flashInBox;
  2. /*去掉水印{{*/
  3. import process;
  4. VirtualProtectEx = ::Kernel32.api("VirtualProtectEx","bool(POINTER hProcess,addr lpAddress, INT dwSize, INT flNewProtect, INT &lpflOldProtect )");
  5. var prcs = process();  
  6. var pDrawDemoAddr = tonumber( win.flashInBox._dll.gethandle()  ) +  0x1000 + 0x25EE0;
  7. VirtualProtectEx( prcs.handle, pDrawDemoAddr,1,0x40/*_PAGE_EXECUTE_READWRITE*/  ,0);  
  8. prcs.writeString( pDrawDemoAddr,'\0' )
  9. prcs.free();
  10. /*}}*/

  11. //创建FLash透明窗口
  12. var flash = ..win.flashInBox( {text = "任务栏你好"} ,true )

  13. win.form._defaultProc[0x1C/*_WM_ACTIVATEAPP*/]  = null
  14. flash._form.fullscreen(true)

  15. flash.show()
  16. flash.putMovie( $"~\example\Flash\testCall.swf")
  17. win.loopMessage()
复制代码

29

主题

658

回帖

4138

积分

超级版主

积分
4138
发表于 2013-1-8 11:50:46 | 显示全部楼层
下面是标准库 win.ui 中自动退出全屏的实现代码:
  1. namespace form {

  2.     _defaultProc = {
  3.         [0x1C/*_WM_ACTIVATEAPP*/] = function(this,hwnd, message, wParam, lParam){
  4.                 if( (!wParam) && this.restoreFullScreen ) this.fullscreen( false );
  5.         }
  6.      }
  7. }
复制代码

6

主题

123

回帖

1113

积分

四级会员

积分
1113
 楼主| 发表于 2013-1-8 12:09:41 | 显示全部楼层
quicker 发表于 2013-1-8 11:50
下面是标准库 win.ui 中自动退出全屏的实现代码:

谢谢 版主  理解了

170

主题

2169

回帖

1万

积分

管理员

积分
13161
发表于 2013-1-8 12:33:33 | 显示全部楼层
xz19910830 发表于 2013-1-8 12:09
谢谢 版主  理解了


请更新一下标准库,已经修改了标准库,对透明分层窗口已禁用自动退出全屏功能

6

主题

123

回帖

1113

积分

四级会员

积分
1113
 楼主| 发表于 2013-1-8 13:39:27 | 显示全部楼层
Jacen 发表于 2013-1-8 12:33
请更新一下标准库,已经修改了标准库,对透明分层窗口已禁用自动退出全屏功能

谢谢  老大
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-9-15 12:20 , Processed in 0.063766 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表