加至200分!先散100分,一个极简单的屏保预览,不知为何关闭!! (100分)

  • 主题发起人 主题发起人 wenqy
  • 开始时间 开始时间
W

wenqy

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D][8D][:(!]我作了一个极简单的屏保预览,按下Button后,用OpenDialog选择到屏保程序,在edit显示路径的同时,应该在Panel上开始预览,但不知为何没有响应?<br>原码如下:<br><br>unit Unit1;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br>&nbsp; Dialogs, StdCtrls, ExtCtrls;<br><br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; &nbsp; Panel1: TPanel;<br>&nbsp; &nbsp; Edit1: TEdit;<br>&nbsp; &nbsp; Button1: TButton;<br>&nbsp; &nbsp; OpenDialog1: TOpenDialog;<br>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Edit1Change(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.Edit1Change(Sender: TObject);<br>&nbsp; begin<br>WinExec(Pchar(Edit1.Text+'/p'+IntToStr(Panel1.Handle)),SW_SHOW);<br>&nbsp; end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; opendialog1.InitialDir:='C:/windows/';<br>if OpenDialog1.Execute then<br>&nbsp;begin<br>&nbsp; Edit1.Text:=OpenDialog1.FileName;<br>&nbsp;end;<br>end;<br>end.<br>
 
咋无大侠接招?
 
你的程序中Panel根本没用。Edit1也是多余的。
 
不知道为什么,你试试把HANDLE转为十六进制形式,而不是inttostr看看
 
我是看了大富翁相关帖子才试作的,请指教如何改!
 
HANDLE转为十六进制形式不会,请指点!
 
WinExec(Pchar(Edit1.Text+' /p'+IntToStr(Panel1.Handle)),SW_SHOW);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//这儿要空一格
 
报告jsxjd大侠,试过了,仍无响应!
 
var S: String;<br>begin<br>&nbsp; ...<br>&nbsp; // /p参数后面也要有空格<br>&nbsp; S := Format('%s /p %d', [OpenDialog1.FileName, Panel1.Handle]);<br>&nbsp; WinExec(PChar(S), SW_SHOW);<br>end;
 
我也有这个问题,试了,不行!谁能有通过的原码?<br>没留意,这个看似简单的问题是否还有些难度!
 
你的文件一定是选择 .scr 文件,其它是不行的。<br>我试过了!!!!!!!!一切OK<br><br>你选择 windows 自带的屏保试。
 
所有代码都是你的,只要加个空格!!!!!!!<br><br><br>unit Unit1;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; StdCtrls, ExtCtrls;<br><br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; &nbsp; Panel1: TPanel;<br>&nbsp; &nbsp; Edit1: TEdit;<br>&nbsp; &nbsp; Button1: TButton;<br>&nbsp; &nbsp; OpenDialog1: TOpenDialog;<br>&nbsp; &nbsp; procedure Edit1Change(Sender: TObject);<br>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>{$R *.DFM}<br><br>procedure TForm1.Edit1Change(Sender: TObject);<br>begin<br>&nbsp; WinExec(Pchar(Edit1.Text+' /p'+IntToStr(Panel1.Handle)),SW_SHOW);<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; opendialog1.InitialDir:='C:/windows/';<br>&nbsp; if OpenDialog1.Execute then<br>&nbsp; &nbsp; Edit1.Text:=OpenDialog1.FileName;<br>end;<br><br>end.<br>
 
你是不是没连接事件!
 
首先感谢jsxjd先生,<br>&nbsp; &nbsp;我坚持把瘟98自带的屏保程序都试了一遍,发现一些问题:<br>&nbsp; &nbsp;1 &nbsp;水底世界,太空,危险动物,运动,神秘之物,黄金时代,大自然,丛林,达芬奇:只左上角有漂亮图片,静止;(它们都带有各自的dll文件);<br>)<br>&nbsp; &nbsp;2 &nbsp;三维文字,三维飞行物,三维管道,三维迷宫,六十年代的美国显示正常.<br>&nbsp; &nbsp;3 &nbsp;频道屏幕保护程序(无自带dll文件),只左上角有一幅IE浏览器标志e的图片,静止;<br>&nbsp; &nbsp;4 &nbsp;我在网上下载的kungfu.scr(可能还是系统默认,全屏显示正常),但在这里预览不响应.<br>不知有何办法解决?
 
贴主可真够粗心,都告诉你了是空格的问题嘛,我的那几行代码当然是运行通过后才贴出来<br>的,只要你选中的是.scr文件就行。<br><br>为什么预览的有的只是一副静止的图片,有的却又会动呢?这是他们设计时就设计成这样的。<br>不信?如果你亲自深入地研究过屏保的制作就会知道了。Windows向屏保程序发送以下参数:<br>/s &nbsp; &nbsp;//启动屏保程序<br>/a &nbsp; &nbsp;//设置屏保密码(同时还会发送窗体句柄)<br>/p &nbsp; &nbsp;//预览屏保(同时还会发送窗体句柄)<br>/c &nbsp; &nbsp;//设置屏保程序参数<br>关键就在于对接到“/p”参数时的响应,如果屏保设计者希望屏保在预览时是动态图,他就<br>会在相应的响应代码里加上让图动起来的代码;如果设计者希望屏保在预览时是静态图,他<br>就只用把一幅图画在预览窗中;如果他不对“/p”参数作任何响应处理,预览窗里就不会有<br>任何东西,这也就是你的那个“kungfu.scr”屏保不响应预览的原因!<br>(更正:刚才把“/p”错打成“/a”了)
 
先把这100分散了.以示谢意;<br>这个程序中预览的'屏幕保护'如何关闭,最好把代码贴上,答上者请指示赠分的办法.<br>我只知道PostMessage(xxx, WM_QUIT, 0, 0); xxx为何参数不知.
 
分散了,希望问题得到指点。
 
后退
顶部