我正在尝试使用以下代码使用SWT将Office 2007/2010应用程序嵌入Java应用程序中:
import java.awt.Canvas;
import javax.swing.JFrame;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.*;
import org.eclipse.swt.widgets.*;
public class EmbeddingTest extends Canvas {
private void initOleViewer(String target) {
Display display = new Display();
Shell shell = SWT_AWT.new_Shell(display, this);
shell.setLayout(new FillLayout());
OleFrame oleFrame = new OleFrame(shell, SWT.NONE);
OleControlSite oleControlSite = new OleControlSite(oleFrame, SWT.NONE, "Word.Document");
oleControlSite.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
OleAutomation word = new OleAutomation(oleControlSite);
int[] applicationId = word.getIDsOfNames(new String[]{"Application"});
Variant property = word.getProperty(applicationId[0]);
OleAutomation application = property.getAutomation();
int[] documentId = application.getIDsOfNames(new String[]{"Documents"});
property = application.getProperty(documentId[0]);
OleAutomation …Run Code Online (Sandbox Code Playgroud) 我正在使用JMX从远程进程中保存一些诊断信息.查看jconsole中的接口显示返回类型是CompositeData(数据实际上作为CompositeDataSupport返回).我想输出与此对象关联的所有键/值对.
问题是接口似乎有一个"values()"方法,无法获取密钥.我在这里错过了什么吗?还有其他方法可以完成这项任务吗?
谢谢!
在Ant中有任何方法可以做这样的事情:
<arguments id="arg-list">
<arg value="arg1" />
<arg value="arg2" />
</arguments>
<property name="prop1" refid="arg-list" />
Run Code Online (Sandbox Code Playgroud)
我正在尝试为psexec编写一个宏,我正在寻找一种传递参数列表的好方法.
我知道你可以用classpaths做类似的事情......
谢谢!
我正在尝试创建一个检测面部并识别它的应用程序.我进行了人脸检测,但在进行识别时我想要一些想法.我正在使用网络摄像头进行跟踪,它可以检测到脸部.然后我只将脸部的一部分带到一个新的灰色图像,并使用EigenObjectRecognizer与数据库中的图像列表进行比较.
但它没有给出好的结果.有时候它会发现一些错误的东西,有时却没有.我想问一下,为了比较照片我必须实施哪些其他技术?像直方图均衡或面部均衡的分辨率?
更新进度条时对集合进行排序的最佳方法是什么?目前我的代码如下:
for (int i = 0; i < items.size(); i++)
{
progressBar.setValue(i);
// Uses Collections.binarySearch:
CollectionUtils.insertInOrder(sortedItems, item.get(i));
}
Run Code Online (Sandbox Code Playgroud)
这显示了进度,但随着项目数量的sortedItems增加,进度条减慢.有没有人有更好的方法?理想情况下,我想使用类似的界面,Collections.sort()以便尝试不同的排序算法.
任何帮助都会很棒!
作为一些背景知识,这段代码从Lucene中撤回了大量文档(1-10百万个)并在它们上面运行自定义比较器.通过将数据写回磁盘来对它们进行排序将太慢而不实用.大部分成本是从磁盘上读取项目,然后在项目上运行比较器.我的电脑有大量内存,所以没有与交换到磁盘等有关的问题.
最后我选择了Stephen的解决方案,因为它非常干净,并允许我轻松添加多线程排序算法.
将页脚行放入JTable的最佳方法是什么?有没有人有任何示例代码来执行此操作?
到目前为止,我唯一想到的方法是在表模型中放一个特殊的行,它总是被排序到底部.
这是我最终得到的:
JTable mainTable = new JTable(mainTableModel);
JTable footerTable = new JTable(footerModel);
footerTable.setColumnModel(mainTable.getColumnModel());
// Disable selection in the footer. Otherwise you can select the footer row
// along with a row in the table and that can look quite strange.
footerTable.setRowSelectionAllowed(false);
footerTable.setColumnSelectionAllowed(false);
JPanel tablePanel = new JPanel();
BoxLayout boxLayout = new BoxLayout(tablePanel, BoxLayout.Y_AXIS);
tablePanel.setLayout(boxLayout);
tablePanel.add(mainTable.getTableHeader()); // This seems like a bit of a WTF
tablePanel.add(mainTable);
tablePanel.add(footerTable);
Run Code Online (Sandbox Code Playgroud)
排序工作正常,但选择页脚行有点奇怪.
我们在当前的应用程序中有几个进程.一个过程处理USB加载程序的检测和删除.处理检测和删除的代码如下.
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m);
break;
}
base.WndProc(ref m);
}
private void OnDeviceChange(ref Message msg)
{
int wParam = (int)msg.WParam;
Win32.DEV_BROADCAST_VOLUME dbVol = new Win32.DEV_BROADCAST_VOLUME();
Win32.DEV_BROADCAST_HDR msgDevHeader = new Win32.DEV_BROADCAST_HDR();
const int DBT_DEVTYP_VOLUME = 0x00000002;
string loaderUpdates;
switch (wParam)
{
case Win32.DBT_DEVICEARRIVAL:
int devType = Marshal.ReadInt32(msg.LParam, 4);
if (devType == DBT_DEVTYP_VOLUME)
{
}
break;
case Win32.DBT_DEVICEREMOVECOMPLETE:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在visual studio环境中运行以调试模式处理USB加载程序的过程时,它会正确检测USB.但我仍然会收到多条消息.接收wparam值为"7"3次的消息,然后接收wparam值为"32768(0x8000/DBT_DEVICEARRIVAL)".这是正常的吗?
当我运行所有其他进程以及检测USB的进程时,似乎始终是仅接收到wparam值为"7"的消息.用wparam作为"7"5次接收meesage.没有wparam值为"(0x8000/DBT_DEVICEARRIVAL)"的消息.可能是什么问题呢?
感谢任何输入/解决方案.
问候Raju
我有一个 C++ 程序,它正在创建一个命名管道来写入数据。有些客户反映了客户端连接到命名管道但服务器端无法写入数据的情况(带有ERROR_NO_DATA)。
我能找到的任何 MSDN 页面都没有真正解释此错误代码;有人对如何解决这个问题有任何想法吗?或者说是什么原因呢?
ostringstream pipeName;
pipeName << "\\\\.\\pipe\\unique-named-pipe-" << GetCurrentProcessId();
pipeHandle = CreateNamedPipeA(
pipeName.str().c_str(), // pipe name
PIPE_ACCESS_DUPLEX, // open mode
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, // pipe mode
PIPE_UNLIMITED_INSTANCES, // max instances
512, // output buffer size
512, // input buffer size
0, // use default timeouts
NULL); // security attributes
if (INVALID_HANDLE_VALUE == pipeHandle)
{
THROW("Failed to create named pipe", GetLastError());
}
cout << "Pipe ready" << endl;
// Wait for a client to …Run Code Online (Sandbox Code Playgroud) java ×5
c# ×2
.net ×1
ant ×1
c++ ×1
content-type ×1
diagnostics ×1
embed ×1
emgucv ×1
fingerprint ×1
jconsole ×1
jmx ×1
jtable ×1
mhtml ×1
ms-office ×1
named-pipes ×1
opencv ×1
progress-bar ×1
psexec ×1
sorting ×1
swing ×1
swt ×1
usb ×1
winapi ×1