yqf0215 最近的时间轴更新
yqf0215

yqf0215

V2EX 第 76141 号会员,加入于 2014-10-07 11:56:01 +08:00
firefox 怎样才能做个带有自己插件的版本啊?
程序员  •  yqf0215  •  243 天前  •  最后回复来自 yqf0215
11
.ssh/config 里面内容太多,用 Python fiet 做了个带 ui 的检索工具
分享创造  •  yqf0215  •  2023-11-29 09:35:43 AM  •  最后回复来自 cc666
22
iPhone14 发布时写的《踏山河》
Apple  •  yqf0215  •  2023-02-08 23:42:50 PM  •  最后回复来自 yqf0215
14
yqf0215 最近回复了
国缘,入口不辣,口感好
我是 20 年下半年过的架构,这个裸考真不容易过,当时我看到论文题目,决定参加培训班的。培训班老师讲了论文的提纲,我就知道这个班有作用。最后我论文 45 过的。
拿这几年试卷看看题目,就知道考哪个了。虽然我是过的架构,但感觉对实际开发人来说,系分应该更容易上手些。
主要看案例分析题和论文题。
视频用不着实时吧?完全可以先翻译好了啊。。。
9 天前
回复了 xueyuehua 创建的主题 Python Windows 新版本怎么实现截图
cursor
非常感谢
@datocp
10 天前
回复了 xueyuehua 创建的主题 Python Windows 新版本怎么实现截图
Windows 11 确实对窗口安全性和隐私做了一些增强,这影响了一些基于窗口句柄的操作。以下是几种可能的解决方案:
1 使用 Windows Graphics Capture API:
```
# 需要安装 Windows SDK 和 Python 包
# pip install windows-capture
from windows_capture import WindowsGraphicsCapture

def capture_window(hwnd):
capturer = WindowsGraphicsCapture()
image = capturer.capture_window(hwnd)
return image
```

2 使用提升权限的方式:
```
import win32security
import win32con
import win32api

def enable_privileges():
# 获取需要的权限
priv_flags = (
win32security.TOKEN_ADJUST_PRIVILEGES |
win32security.TOKEN_QUERY
)

# 获取当前进程的 token
h_token = win32security.OpenProcessToken(
win32api.GetCurrentProcess(),
priv_flags
)

# 提升权限
privileges = [
(win32security.LookupPrivilegeValue(
None,
win32security.SE_DEBUG_NAME
),
win32con.SE_PRIVILEGE_ENABLED)
]

# 应用权限
win32security.AdjustTokenPrivileges(
h_token,
0,
privileges
)
```

3 使用 DirectX 捕获方式:
```
// C# 示例
using SharpDX;
using SharpDX.Direct3D11;
using SharpDX.DXGI;

public class ScreenCapture
{
private Factory1 factory;
private Adapter1 adapter;
private Device device;
private Output output;
private Output1 output1;

public void Initialize()
{
factory = new Factory1();
adapter = factory.GetAdapter1(0);
device = new Device(adapter);
output = adapter.GetOutput(0);
output1 = output.QueryInterface<Output1>();
}

public Bitmap CaptureScreen()
{
// 实现截图逻辑
// ...
}
}
```

4 使用 SetWinEventHook 监听窗口事件:
```
import win32con
import win32api
import win32gui
import ctypes
from ctypes import wintypes

def win_event_callback(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime):
if event == win32con.EVENT_SYSTEM_FOREGROUND:
# 处理窗口事件
pass

def setup_hook():
user32 = ctypes.windll.user32

# 设置事件钩子
WinEventProcType = ctypes.WINFUNCTYPE(
None,
wintypes.HANDLE,
wintypes.DWORD,
wintypes.HWND,
wintypes.LONG,
wintypes.LONG,
wintypes.DWORD,
wintypes.DWORD
)

win_event_proc = WinEventProcType(win_event_callback)

user32.SetWinEventHook(
win32con.EVENT_SYSTEM_FOREGROUND,
win32con.EVENT_SYSTEM_FOREGROUND,
0,
win_event_proc,
0,
0,
win32con.WINEVENT_OUTOFCONTEXT
)
```

5 考虑使用 UI 自动化框架:
```
from comtypes.client import CreateObject

def capture_using_uiautomation():
UIAutomation = CreateObject("UIAutomationCore.CUIAutomation")
element = UIAutomation.GetRootElement()
# 实现截图和自动化操作
```

主要建议:
1 优先使用 Windows Graphics Capture API ,这是微软推荐的新方法
2 如果需要后台操作,考虑使用 UI 自动化框架
3 对于特权操作,确保:
以管理员权限运行
正确处理 UAC
申请必要的系统权限

4 如果是开发生产环境应用,建议:
使用官方支持的 API
实现适当的错误处理
考虑兼容性问题

5 监控系统事件和性能:
使用事件钩子
实现错误日志
处理资源释放

这些方法中,Windows Graphics Capture API 是最推荐的方案,因为它:
是官方支持的新 API
性能更好
兼容性更好
更安全
如果这些方法都不能满足需求,可能需要考虑使用其他技术方案或重新设计应用程序的架构。
写软件不容易,能支持就支持一下作者吧,用了很多年了也没亏我们
@justFxxk2060 正解
30 天前
回复了 shuiguomayi 创建的主题 配件 apple magic mouse 1gen 这么差么?
这鼠标那么薄,时间用长了,手疼,不舒服
tp 的不稳定,华为的路由器非常稳定,长时间运行也不用重启。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2631 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 05:04 · PVG 13:04 · LAX 21:04 · JFK 00:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.