Desktop控制第二部分 - Hook Desktop

本文介绍了如何Hook Desktop,包括设置Desktop背景图的方法,Hook的原因和实现方式,以及探讨了在Hook中创建Web browser对象的可能性。同时,文章提及了通过Hook explorer显示图像的技术,并鼓励读者在遇到相关问题时留言或加入技术群交流。

本来今天平安夜,我是要来写点东西的,结果发现上回的文章(Desktop控制第一部分)没有人注意,
也没有人有留言, 故信心大减.

但我还是把: Desktop背景图设置整理一下.

另外再讲一下: Hook Desktop 后的方便, 以及Hook Desktop 的实现原理.


1. Desktop背景图设置
由于上一篇文章没有讲的很细致, 这回补充说明一下.

下面的代码是基于VC6 MFC的. 额外使用类: CDVReg 设置注册表健值, 这个大家可以自己实现. 这里不再提供.

 

BOOL SetBackImage(LPCTSTR lpszImage)
{
 
if ! lpszImage  ||   0   ==  lstrlen( lpszImage ) )
  
return  TRUE;

      CString strSubKey 
=   "" ;
  

 
//  下面代码找到当前用户的KEY值, 如: S-1-5-21-329068152-1788223648-839522115-500
 HKEY keyUsers  =  NULL;
 
for int  i  =   0 ; i  <   24 ; i  ++  )
 {
  DWORD dwRet 
=  RegEnumKey( HKEY_USERS, 
   i,
   strSubKey.GetBuffer( 
256  ),
   
256  );
  strSubKey.ReleaseBuffer();

  
if ( ERROR_SUCCESS  ==  dwRet )
  {
   CString strCheck 
=  strSubKey  +   " /Software/Microsoft/Internet Explorer/Desktop/General " ;
   
   HKEY hKeySub 
=  NULL;
   
if ( ERROR_SUCCESS  ==  RegOpenKey( HKEY_USERS, strCheck,  & hKeySub ) )
   {
    RegCloseKey( hKeySub );
    
break ;
   }
  }
  
else
  {
   strSubKey 
=   "" ;
   
break ;
  }

  strSubKey 
=   "" ;
 }


 
if ( strSubKey.IsEmpty() )
  
return  FALSE;

 CString strWallPaper 
=  lpszImage;
 CString WallpaperStyle 
=   " 2 " ;   //  风格


 
//  1. 
 CString strPath  =   " Control Panel/Desk
"PS C:\Users\Administrator\Desktop> # 创建修复脚本文件 PS C:\Users\Administrator\Desktop> $scriptContent = @' >> param( >> [string]$PythonPath = "E:\Python310" >> ) >> >> # ... [完整脚本内容,同上] ... >> '@ PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> Set-Content -Path "Repair-PythonSite.ps1" -Value $scriptContent -Encoding UTF8 PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 设置执行策略允许脚本运行 PS C:\Users\Administrator\Desktop> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force PS C:\Users\Administrator\Desktop> param( >> [string]$PythonPath = "E:\Python310" >> ) PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 设置控制台编码为UTF-8 PS C:\Users\Administrator\Desktop> [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 PS C:\Users\Administrator\Desktop> $env:PYTHONUTF8 = 1 PS C:\Users\Administrator\Desktop> $env:PYTHONIOENCODING = "utf-8" PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> function Repair-PythonSite { >> param( >> [string]$PythonPath = "E:\Python310" >> ) >> >> # ... [完整的修复函数实现,同上] ... >> } PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> function Test-PythonEnvironment { >> param( >> [string]$PythonPath = "E:\Python310" >> ) >> >> # ... [完整的测试函数实现,同上] ... >> } PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 执行修复 PS C:\Users\Administrator\Desktop> Repair-PythonSite -PythonPath $PythonPath PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 提示重启 PS C:\Users\Administrator\Desktop> Write-Host "`nPlease restart PowerShell session for changes to take effect" -ForegroundColor Yellow Please restart PowerShell session for changes to take effect PS C:\Users\Administrator\Desktop> Write-Host "Close this window and open a new one" -ForegroundColor Yellow Close this window and open a new one PS C:\Users\Administrator\Desktop> # 步骤1:创建脚本文件 PS C:\Users\Administrator\Desktop> $scriptContent = Get-Content -Path "Repair-PythonSite.ps1" -Raw PS C:\Users\Administrator\Desktop> Set-Content -Path "Repair-PythonSite.ps1" -Value $scriptContent -Encoding UTF8 PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 步骤2:设置执行策略(仅需一次) PS C:\Users\Administrator\Desktop> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 步骤3:执行修复 PS C:\Users\Administrator\Desktop> .\Repair-PythonSite.ps1 -PythonPath "E:\Python310" PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 步骤4:重启后加载测试函数 PS C:\Users\Administrator\Desktop> # 在新会话中执行: PS C:\Users\Administrator\Desktop> . .\Repair-PythonSite.ps1 # 点源加载函数 PS C:\Users\Administrator\Desktop> Test-PythonEnvironment -PythonPath "E:\Python310" PS C:\Users\Administrator\Desktop> # 打开配置文件 PS C:\Users\Administrator\Desktop> if (-not (Test-Path $PROFILE)) { >> New-Item -Type File -Path $PROFILE -Force >> } PS C:\Users\Administrator\Desktop> notepad $PROFILE PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 添加以下内容 PS C:\Users\Administrator\Desktop> if ($env:OS -like "*Windows*") { >> [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 >> $env:PYTHONUTF8 = 1 >> $env:PYTHONIOENCODING = "utf-8" >> $PSDefaultParameterValues['*:Encoding'] = 'utf8' >> } PS C:\Users\Administrator\Desktop> # 保存为 Full-Repair.ps1 PS C:\Users\Administrator\Desktop> param( >> [string]$PythonPath = "E:\Python310" >> ) PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 创建修复脚本 PS C:\Users\Administrator\Desktop> $repairScript = @" >> param( >> [string]`$PythonPath = "E:\Python310" >> ) >> >> # ... [完整的Repair-PythonSite.ps1内容] ... >> "@ PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> Set-Content -Path "Repair-PythonSite.ps1" -Value $repairScript -Encoding UTF8 PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 设置执行策略 PS C:\Users\Administrator\Desktop> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force -ErrorAction SilentlyContinue PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 执行修复 PS C:\Users\Administrator\Desktop> .\Repair-PythonSite.ps1 -PythonPath $PythonPath PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> # 提示重启 PS C:\Users\Administrator\Desktop> Write-Host "`n修复完成!请关闭所有PowerShell窗口并重新打开" -ForegroundColor Green 修复完成!请关闭所有PowerShell窗口并重新打开 PS C:\Users\Administrator\Desktop> Write-Host "在新窗口中执行以下命令进行测试:" -ForegroundColor Cyan 在新窗口中执行以下命令进行测试: PS C:\Users\Administrator\Desktop> Write-Host "1. . .\Repair-PythonSite.ps1" -ForegroundColor Yellow 1. . .\Repair-PythonSite.ps1 PS C:\Users\Administrator\Desktop> Write-Host "2. Test-PythonEnvironment -PythonPath `"$PythonPath`"" -ForegroundColor Yellow 2. Test-PythonEnvironment -PythonPath "E:\Python310" PS C:\Users\Administrator\Desktop>" "PS C:\Users\Administrator\Desktop> # 提示重启 PS C:\Users\Administrator\Desktop> Write-Host "`n修复完成!请关闭所有PowerShell窗口并重新打开" -ForegroundColor Green 修复完成!请关闭所有PowerShell窗口并重新打开 PS C:\Users\Administrator\Desktop> Write-Host "在新窗口中执行以下命令进行测试:" -ForegroundColor Cyan 在新窗口中执行以下命令进行测试: PS C:\Users\Administrator\Desktop> Write-Host "1. . .\Repair-PythonSite.ps1" -ForegroundColor Yellow 1. . .\Repair-PythonSite.ps1 PS C:\Users\Administrator\Desktop> Write-Host "2. Test-PythonEnvironment -PythonPath `"$PythonPath`"" -ForegroundColor Yellow 2. Test-PythonEnvironment -PythonPath "" PS C:\Users\Administrator\Desktop> Write-Host "1. . .\Repair-PythonSite.ps1" -ForegroundColor Yellow 1. . .\Repair-PythonSite.ps1 PS C:\Users\Administrator\Desktop> Write-Host "2. Test-PythonEnvironment -PythonPath `"$PythonPath`"" -ForegroundColor Yellow 2. Test-PythonEnvironment -PythonPath "" PS C:\Users\Administrator\Desktop> "
最新发布
08-23
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值