Форум: "Начинающим";
Текущий архив: 2013.10.20;
Скачать: [xml.tar.bz2];
ВнизChange wallpaper! Help Найти похожие ветки
← →
pioli (2013-01-25 18:38) [0]Прога должна менять обои на рабочем столе, в delphi полный ноль
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, ShlObj;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
ActiveDesktop: IActiveDesktop;
hDesc:HRESULT;
begin
hDesc:=CoCreateInstance(CLSID_ActiveDesktop,nil,CLSCTX_INPROC_SERVER,IID_IActive Desktop,ActiveDesktop);
if not Failed(hDesc) then
begin
ActiveDesktop.SetWallpaper(D:\0.bmp, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
Ошибки:
[Error] Unit1.pas(19): Statements not allowed in interface part
[Error] Unit1.pas(20): Undeclared identifier: "CoCreateInstance"
[Error] Unit1.pas(20): Undeclared identifier: "CLSCTX_INPROC_SERVER"
[Error] Unit1.pas(20): Undeclared identifier: "IID_IActiveDesktop"
[Warning] Unit1.pas(24): Unsafe type "PChar"
[Error] Unit1.pas(28): Statement expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"
Что я не так делаю помогите , пожалуйста
← →
Rouse_ © (2013-01-25 19:13) [1]
> Что я не так делаю
Все, кнопку на форме размести, два раза по ней щелкни, в появившемся обработчике вбей свой код начиная с ActiveDesktop: IActiveDesktop;
← →
pioli (2013-01-25 19:26) [2]
> Все, кнопку на форме размести, два раза по ней щелкни, в
> появившемся обработчике вбей свой код начиная с ActiveDesktop:
> IActiveDesktop;
Можно ли как-нибудь без формы и кнопок и вооще чтобы никаких окон,уведомлений не вылазило обойтись, а рисунок через параметр передать при запуске?
← →
Rouse_ © (2013-01-25 19:36) [3]Консольное приложение напиши.
← →
pioli (2013-01-25 19:52) [4]нужно именно через ActiveDesktop
и как консольное приложение написать? можно поподробней пожалуйста?
← →
Rouse_ © (2013-01-25 19:56) [5]Новый проект -> консольное приложение
← →
pioli (2013-01-25 20:04) [6]Чего-то не получается. Undeclared identifier: "ActiveDesktop" в чем проблема?
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, ComObj, ShlObj;
begin
ActiveDesktop: IActiveDesktop;
hDesc:HRESULT;
begin
hDesc:=CoCreateInstance(CLSID_ActiveDesktop,nil,CLSCTX_INPROC_SERVER,IID_IActive Desktop,ActiveDesktop);
if not Failed(hDesc) then
begin
ActiveDesktop.SetWallpaper(D:\0.bmp, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
end.
← →
Rouse_ © (2013-01-25 20:11) [7]
var
ActiveDesktop: IActiveDesktop;
hDesc:HRESULT;
begin
hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
if Succeeded(hDesc) then
begin
ActiveDesktop.SetWallpaper("D:\0.bmp", 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
а вообще зачем ты за это взялся если программировать не умеешь?
← →
pioli (2013-01-25 20:32) [8]Теперь ошибок не выдает, но и обоину не менят
я так понимаю, надо как-то использовать эти две строчки или поправить чтобы все заработало? Недолжно ли вместо "D:\0.bmp" стоять чтонить другое?
{$APPTYPE CONSOLE}
ActiveDesktop.SetWallpaper("D:\0.bmp", 0);
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, Messages, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, ShlObj, ActiveX;
var
ActiveDesktop: IActiveDesktop;
hDesc:HRESULT;
begin
hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
if Succeeded(hDesc) then
begin
ActiveDesktop.SetWallpaper("D:\0.bmp", 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
end.
← →
Rouse_ © (2013-01-25 20:34) [9]Ну а дальше читай справку: http://msdn.microsoft.com/en-us/library/bb776357(v=vs.85).aspx
← →
pioli (2013-01-25 20:37) [10]И на этом Огромное человеческое СПАСИБО!
← →
pioli (2013-01-25 21:24) [11]Невыполняется условие if then? окно мелькает, но действие во втором begin не происходит, в чем проблема?
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, Messages, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, ShlObj, ActiveX;
var
ActiveDesktop: IActiveDesktop;
hDesc:HRESULT;
begin
hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
if Succeeded(hDesc) then
begin
ActiveDesktop.SetWallpaper("d:/0.bmp", 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
end.
← →
MBo © (2013-01-25 22:52) [12]>Невыполняется условие if then?
Поставь точку останова (слева от кода) и проверь значение при отладке
← →
pioli (2013-01-26 09:17) [13]Дело в том, что
hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
неработает, из-за чего может быть(windows&)?
← →
brother © (2013-01-26 11:33) [14]> неработает,
как именно?
← →
pioli (2013-01-26 11:38) [15]по идеи hDesc должен возвращать Succeeded, но эор этого не делает, соответственно begin не выполняется и программа завершается
← →
brother © (2013-01-26 11:46) [16]http://www.programmersforum.ru/showthread.php?t=213315
← →
brother © (2013-01-26 11:48) [17]
uses
ShlObj, ActiveX;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
AD: IActiveDesktop;
HR: HResult;
begin
CoInitialize(nil);
HR := CoCreateInstance(CLSID_ActiveDesktop, nil, CLSCTX_INPROC_SERVER,
IActiveDesktop, AD);
if Succeeded(HR) then begin
HR := AD.SetWallpaper(PWideChar(WideString("c:\some.bmp")), 0);
HR := AD.ApplyChanges(AD_APPLY_ALL);
end;
CoUninitialize
end;
← →
pioli (2013-01-26 11:49) [18]ActiveDesktop.SetWallpaper("d:/0.bmp", 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
ActiveDesktop просто не хочет работать(, программа вылетает
может на windows 7 вообще нет это функции?
← →
brother © (2013-01-26 11:49) [19]> программа вылетает
что это значит?
← →
pioli (2013-01-26 11:51) [20]консольное окно пустое появляется и неотвечает зависает
← →
brother © (2013-01-26 11:53) [21]только что проверил [17] все работает!
← →
pioli (2013-01-26 11:54) [22]На какой оси?
← →
brother © (2013-01-26 11:59) [23]w7x64 d7
← →
pioli (2013-01-26 12:01) [24]Проверил [17]
[Warning] Project1.dpr(10): File not found: "Project1.dfm"
[Error] Project1.dpr(12): ";" expected but "." found
[Warning] Project1.dpr(21): Unsafe type "PWideChar"
[Error] Project1.dpr(27): Declaration expected but end of file found
← →
pioli (2013-01-26 12:09) [25]Можно ли както без форм обойтись?
← →
pioli (2013-01-26 12:36) [26]ААААА!! _brother_ огромное тебе спасибо, все разобрался, всё работает))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.10.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.002 c