怎样用程序隐藏开始菜单?谢谢!
解决方案 »
- delphixe2 firemonkey ios开发
- microsoft jet 数据库引擎打不开文件,它已经被别的用户以独占方式打开 或没有查看数据的权限
- 关于TListBox选项的问题
- 我写的activex控件放在网页中使用,在delphi中用run下的register activex server注册后,在网页上调用它,没有问题,可是用vpscript注册
- 如何将一个字符串转换成Enum中对应的序列号?
- 关于TreeView
- 执行事务处理速度特别慢,求对策???急!
- 小妹继续求助 UP有分 拼命三郎请进`:)
- 求救!关于类型转换。(在线等待!高分相送)
- 关于让图象随时间滚动的问题
- 3/4的分数(100多)都给你,信誉担保!!!!!!!!
- 有关窗口最小化的问题!急啊!!!
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer在右边的窗口中创建一个DOWRD值:"NoChangeStartMenu",并将其值设为“1”
showwindow(findwindow('Shell_TrayWnd',nil),SW_NORMAL); // 恢复
hwndTask,hwndStart : THandle;
begin
hwndTask := FindWindow('Shell_TrayWnd','');
hwndStart := FindWindowEx(hwndTask,0,'Button','');
ShowWindow(hwndStart,SW_HIDE);
end;
可以啦!
// 隐藏var
h:hwnd;
begin
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
ShowWindow(h,SW_HIDE);
end;
// 恢复
var
h:hwnd;
begin
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
ShowWindow(h,SW_NORMAL);
end;刚刚测试过的!
procedure TForm1.Button1Click(Sender: TObject);
var
h:hwnd;
begin
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
ShowWindow(h,SW_HIDE);
end;
// 恢复
procedure TForm1.Button2Click(Sender: TObject);
var
h:hwnd;
begin
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
ShowWindow(h,SW_NORMAL);
end;
同时:
void StartButton(bool Visible)
{
HWND hTaskBarWindow ;
hTaskBarWindow=FindWindow("Shell_TrayWnd",NULL);
if (hTaskBarWindow!=0)
{
hTaskBarWindow = FindWindowEx(hTaskBarWindow,0,"Button",NULL);
EnableWindow(hTaskBarWindow,Visible);
}
}
Var
Tray, Child : hWnd;
C : Array[0..127] of Char;
S : String; Begin
Tray := FindWindow('Shell_TrayWnd', NIL);
Child := GetWindow(Tray, GW_CHILD);
While Child <> 0
do Begin
If GetClassName(Child, C, SizeOf(C)) > 0
Then Begin
S := StrPAS(C);
If UpperCase(S) = 'BUTTON'
then begin
// IsWindowVisible(Child)
startbutton_handle:=child;
If Visi
then ShowWindow(Child, 1)
else ShowWindow(Child, 0);
end;
End;
Child := GetWindow(Child, GW_HWNDNEXT);
End;
End;
{ Reserved Key Handles. }
{$EXTERNALSYM HKEY_CLASSES_ROOT}
HKEY_CLASSES_ROOT = DWORD($80000000);
{$EXTERNALSYM HKEY_CURRENT_USER}
HKEY_CURRENT_USER = DWORD($80000001);
{$EXTERNALSYM HKEY_LOCAL_MACHINE}
HKEY_LOCAL_MACHINE = DWORD($80000002);
{$EXTERNALSYM HKEY_USERS}
HKEY_USERS = DWORD($80000003);
{$EXTERNALSYM HKEY_PERFORMANCE_DATA}
HKEY_PERFORMANCE_DATA = DWORD($80000004);
{$EXTERNALSYM HKEY_CURRENT_CONFIG}
HKEY_CURRENT_CONFIG = DWORD($80000005);
{$EXTERNALSYM HKEY_DYN_DATA}
HKEY_DYN_DATA = DWORD($80000006);它们必须在TRegistry变量的RootKey属性中指定。
要取得某一个路径的某个键值,必须找到某一个主键,例如有如下一个路径存放着WORD97存放的程序路径:
\Software\Microsoft\Office\8.0\Word\InstallRoot\Path
其中,PATH是键,在它前面的便是主键(键的路径),而这些键又是放在HKEY_LOCAL_MACHINE这个根键中的。当然,我们想要的是PATH对应的数据,而不是想知道有PATH这个键存在。PATH的类型是一个字符串,所以需要一个字符串变量存放它,例程中使用直接显示的方法表达它。因此,读出PATH键数据的过程就应该是,确定根键,进入主键(路径),读出键的数据值。为了体现对注册表的写操作,我们还特意创建一个主键\Software\3hsoft和里面一个字符串的键MyData。下面是一小段关于此过程的程序,虽然内容不多,但基本上已经将读写的操作表现出来了。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry; // 记得要加入这个红色的。
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
Const
FPath = '\Software\Microsoft\Office\8.0\Word\InstallRoot';
FKey = 'Path';
FMyPath = '\Software\3hSoft';
FMyKey = 'MyData';
Var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
If Reg.OpenKey(FPath, False) then
ShowMessage(Reg.ReadString(FKey)); // 读出的 WinWord 的路径就显示出来了。
Reg.CreateKey(FMyPath); // 创建我们的主键
Reg.OpenKey(FMyPath, True); // 进入我们自己的主键中
Reg.WriteString(FMyKey, 'This is a registry operation test program.');
// 写进键值。
finally
Reg.Free; // 用 Try..Finally 结构确保 REG 变量能够释放。
end;
end;
end.
var
hwndTask,hwndStart : THandle;
begin
hwndTask := FindWindow('Shell_TrayWnd','');
hwndStart := FindWindowEx(hwndTask,0,'Button','');
ShowWindow(hwndStart,SW_HIDE);
end;
这段代码是可以的,我测试过了,OK