请大家看看这个程序!?(20分)

  • 主题发起人 主题发起人 topsuper
  • 开始时间 开始时间
T

topsuper

Unregistered / Unconfirmed
GUEST, unregistred user!
下面这个程序运行时总是提示‘Class Eolesys error message '标记没有引用存储'’
请GS
program PR_param;
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Dialogs, StdCtrls,Registry,ComObj, ShlObj;
var
ADeskTop:IActiveDesktop;
wallpaper:PwideChar;
lph: HKEY;
X: DWORD;
begin
X:=1;
RegOpenKey(HKEY_CURRENT_USER, 'Software/Microsoft/Windows/CurrentVersion/Policies/Explorer', lph);
RegSetValueEx(lph, 'ForceActiveDesktopOn', 0, REG_DWORD, @X, SizeOf(DWORD));
ADeskTop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
ADeskTop.SetWallpaper(PWideChar(paramstr(1)),0);
ADeskTop.ApplyChanges(AD_APPLY_ALL)
end.
 
没有在线程里面用吧

-----
http://www.8421.org
 
没有,这就是一个命令行的程序。读参数的。
 
uses
ActiveX;

开头加
CoInitialize(nil);
 
谢谢!
问题已经解决。
不过我还想问一下为什么在有窗体的程序中上述可以运行。而在这个程序中却无法运行
该程序的目的就是将命令行常数设置为壁纸。
请!!!
 
Application.Initialize初始化中好像有调用com初始化代码
 
谢谢,我的意思是为什么在有窗体的程序中可以设置壁纸而在无窗体的程序下却不行。
不知为什么?
 
to qdyoung
开头加
CoInitialize(nil);
是在线程的:
constructor TQueryThread.Create(Suspended: Boolean; Query: TQuery; adoquery: TADOQuery);
begin
CoInitialize(nil); //在这里加吗?
inherited Create(Suspended);
fQuery:=Query;
AQuery:=adoquery;
FreeOnTerminate:=True;
end;
 
后退
顶部