我有Windows 7,64位.
我正在尝试使用regsvr32注册.dll(comdlg32.dll).但是我得到一个错误,表示读取了dll但找不到DLLRegistryServer入口点.
我已经在System32和SysWOW64下运行命令,并且我已经使用"以管理员身份运行"运行我的命令.
我的旧MSComDlg.CommonDialog组件不再使用64位.
我正在尝试使用Java中的本机Windows文件对话框,使用JNA来调用comdlg32函数GetOpenFileName
.我做了一个静态方法,OpenFileDialog.display
看起来像这样:
public static List<File> display(Window parent, boolean allowMultiSelect)
Run Code Online (Sandbox Code Playgroud)
它应该返回所选文件,如果用户取消了对话框,则返回null.
我有两个简单的测试程序.这个按预期工作:
package nativedialogs;
import java.io.File;
import java.util.List;
public class SimpleTest {
public static void main(String[] args) {
List<File> files = OpenFileDialog.display(null, true);
System.out.println(files);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这个不是:
package nativedialogs;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class SwingTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton …
Run Code Online (Sandbox Code Playgroud) 我正在 Qt 中开发一个新软件,但几天后,当我运行该项目时,我收到一些令人困惑的错误消息:
mincore\com\oleaut32\dispatch\ups.cpp(2128)\OLEAUT32.dll!75FEEF12: (caller: 75FEE58F) ReturnHr(1) tid(10a0) 8002801D Bibliothek nicht registriert.
mincore\com\oleaut32\dispatch\ups.cpp(2128)\OLEAUT32.dll!75FEEF12: (caller: 75FEE58F) ReturnHr(2) tid(10a0) 8002801D Bibliothek nicht registriert.
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 QFileDialog打开XML 文件后,出现新的错误消息:
shell\comdlg32\fileopensave.cpp(14267)\COMDLG32.DLL!76FC7BED: (caller: 76FF686C) ReturnHr(1) tid(10a0) 80004005 Unbekannter Fehler
CallContext:[\PickerModalLoop]
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何解决这个问题,也许是因为新的 windows10 更新而存在?
这两条消息都不会导致程序崩溃。每次运行项目时都会出现第一条消息,第二条消息仅在打开 XML 文件时出现,这也导致无法使用该程序,因为我需要打开该 XML 文件。我很确定问题不是由代码问题引起的。
有人可以帮助我吗?我重新安装了Qt,问题依然存在。
我有一个场景,我需要将一个脚本放在一起,为当前用户添加以下注册表项的条目:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU\
Run Code Online (Sandbox Code Playgroud)
我试图找出此密钥中允许的最大值数,以便我可以将我的脚本添加到另一个上.值名称从字母表的开头开始,但我不想假设它们以"Z"结尾.
背景:我们正在重新打包专有(即不是我们自己的,我们无权访问源)应用程序并尝试设置其默认文件 - >打开位置.经过许多痛苦的快照和文件/ Regmon会话之后,这似乎就是这样做的.我知道它非常hackish但它确实有效,我已经手动测试了这个理论.也就是说,我肯定愿意接受有关如何以更加Win32友好的方式执行此操作的建议 - 假设应用程序没有自己的更好的机制来执行此操作.
我需要在报表模式下获取列表控件中的列数.
现在我发送一个LVM_GETCOLUMN
增加的列号,直到SendMessage
返回FALSE
:
int col;
for (col = 0;; col++)
{
LVCOLUMN Column;
Column.mask = LVCF_WIDTH;
if (!::SendMessage(hWnd, LVM_GETCOLUMN, col, (LPARAM)Column)
break;
}
Run Code Online (Sandbox Code Playgroud)
但这很尴尬.