「java监控window」Java监控granf

博主:adminadmin 2022-12-12 23:12:06 63

本篇文章给大家谈谈java监控window,以及Java监控granf对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用java实现web服务器的监控

Hyperic HQ集成了强大的监测和管理功能,它有开源版本,您可以直接使用它用来对web服务器进行监控。

如果您想自己写代码实现,Hyperic HQ提供了一个服务器各种性能指标采集的API,这个API包本身提供了各种平台(linux/MAC/window等)的兼容。

Java中如何在windows桌面上添加鼠标监听事件

去下载 JInvoke , 这是一个例子:如果网上找不到 JInvoke.jar,我传了一个到网站了, 打开后在上级目录[..]的myfiles目录里能找到.ji.zip即是

import static com.jinvoke.win32.WinConstants.*;

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import com.jinvoke.Callback;

import com.jinvoke.JInvoke;

import com.jinvoke.NativeImport;

import com.jinvoke.Util;

import com.jinvoke.win32.User32;

import com.jinvoke.win32.structs.Msg;

public class MouseHook extends JPanel{

static {

JInvoke.initialize();

}

@NativeImport(library = "user32")

public native static int SetWindowsHookEx (int idHook, Callback hookProc, int hModule, int dwThreadId);

@NativeImport(library = "user32")

public native static int UnhookWindowsHookEx (int idHook);

public static final int WH_MOUSE_LL = 14;

static JFrame frame;

static TextArea mouseEventArea = new TextArea();

static JButton setHookBtn;

static JButton removeHookBtn;

public MouseHook() {

super(new BorderLayout());

mouseEventArea.setText("1) Click the \"Set Mouse Hook\" button.\n" +

"2) Start clicking anywhere on the desktop. Mouse clicks will be captured here.\n" +

"3) Stop the mouse hook by clicking the \"Remove Mouse Hook\" button.\n\n");

JScrollPane MouseEventPane = new JScrollPane(mouseEventArea);

add(MouseEventPane, BorderLayout.CENTER);

JPanel buttonPanel = new JPanel();

buttonPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));

setHookBtn = new JButton("Set Mouse Hook");

setHookBtn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

setMouseHook();

}} );

removeHookBtn = new JButton("Remove Mouse Hook");

removeHookBtn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

unsetMouseHook();

}} );

removeHookBtn.setEnabled(false);

buttonPanel.add(setHookBtn);

buttonPanel.add(removeHookBtn);

add(buttonPanel, BorderLayout.SOUTH);

}

private void setMouseHook() {

setHookBtn.setEnabled(false);

removeHookBtn.setEnabled(true);

// This hook is called in the context of the thread that installed it.

// The call is made by sending a message to the thread that installed the hook.

// Therefore, the thread that installed the hook must have a message loop.

//

// We crate a new thread as we don't want the AWT Event thread to be stuck running a message pump

// nor do we want the main thread to be stuck in running a message pump

Thread hookThread = new Thread(new Runnable(){

public void run() {

if (MouseProc.hookHandle == 0) {

int hInstance = User32.GetWindowLong(Util.getWindowHandle(frame), GWL_HINSTANCE);

MouseProc.hookHandle = SetWindowsHookEx(WH_MOUSE_LL,

new Callback(MouseProc.class, "lowLevelMouseProc"),

hInstance,

0);

// Standard message dispatch loop (message pump)

Msg msg = new Msg();

while (User32.GetMessage(msg, 0, 0, 0)) {

User32.TranslateMessage(msg);

User32.DispatchMessage(msg);

}

} else {

mouseEventArea.append("The Hook is already installed.\n");

}

}});

hookThread.start();

}

private void unsetMouseHook() {

setHookBtn.setEnabled(true);

removeHookBtn.setEnabled(false);

UnhookWindowsHookEx(MouseProc.hookHandle);

MouseProc.hookHandle = 0;

}

private static void createAndShowGUI() {

//Create and set up the window.

frame = new JFrame("Mouse Hook");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

MouseHook MouseEventsWindow = new MouseHook();

MouseEventsWindow.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));

//Add content to the window.

frame.add(MouseEventsWindow, BorderLayout.CENTER);

//Display the window.

frame.pack();

frame.setBounds(300, 200, 750, 600);

frame.setVisible(true);

}

public static void main(String[] args) {

//Schedule a job for the event-dispatching thread:

//creating and showing this application's GUI.

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

}

});

}

}

class MouseProc {

static int hookHandle;

@NativeImport(library = "user32")

public native static int CallNextHookEx (int idHook, int nCode, int wParam, int lParam);

static {

JInvoke.initialize();

}

public static int lowLevelMouseProc(int nCode, int wParam, int lParam ) {

if (nCode 0)

return CallNextHookEx(hookHandle, nCode, wParam, lParam);

if (nCode == HC_ACTION) {

MouseHookStruct mInfo = Util.ptrToStruct(lParam, MouseHookStruct.class);

String message = "Mouse pt: (" + mInfo.pt.x + ", " + mInfo.pt.y + ") ";

switch (wParam) {

case WM_LBUTTONDOWN:

message += "Left button down";

break;

case WM_LBUTTONUP:

message += "Left button up";

break;

case WM_MOUSEMOVE:

message += "Mouse moved";

break;

case WM_MOUSEWHEEL:

message += "Mouse wheel rotated";

break;

case WM_RBUTTONDOWN:

message += "Right button down";

break;

case WM_RBUTTONUP:

message += "Right button down";

break;

}

System.out.println(message);

// MouseHook.mouseEventArea.append(message+"\n");

}

return CallNextHookEx(hookHandle, nCode, wParam, lParam);

}

}

=============================================

import com.jinvoke.NativeStruct;

import com.jinvoke.win32.structs.Point;

@NativeStruct

public class MouseHookStruct {//MSLLHOOKSTRUCT

public Point pt = new Point();

public int mouseData;

public int flags;

public int time;

public int dwExtraInfo;

}

java如何实现对windows系统和Tomcat服务器进行监控

可以实现,我试过,cpu、内存、磁盘空间等参数信息用C语言来写一个DLL工程(extern "c"声明),最好不要用C++写,因为C++的导出函数会变名,然后java通过JNI规范调用C编写的函数。

具体是先System.loadLibruary("dll名称");

用C函数名,注意编译DLL的时候需要java类的头文件。cmd命令:javah Java类名。再直接调C函数。

java 监控windows系统的进程

JAVA? 不是系统= =`!!

可以跟你说 你说的

JAVA是最简单的一个 也是功能最低的 起码不能双开 就是上2个QQ (甚至不能后台运行软件)

塞班 NOKIA的智能系统 比较容易入手 第一次接触智能机的话 就选择他吧``

WM 这个系统也是智能``但是呢 比较复杂```

你完全可以无视你的JAVA```

在塞班和WM这2个选择````

个人是推荐你用塞班 因为塞班的价格都不高 也比较简单,,,,

重要的是 软件多 除了5.0外

请参考

如何监控Java应用程序的Windows内存使用情况

应用程序很高兴对所有这些活动一无所知。它只知道自己的虚拟地址空间。但是,如果当前在主存中的页面集(称为 驻留集)少于实际要使用的页面集(称为 工作集),应用程序的性能很快就会显著降低。(不幸的是,本文中您将看到,我们要讨论的工具常常交换使用这两个术语,尽管它们指的是完全不同的事物。)

Task Manager 和 PerfMon

我们首先考察两种最常见的工具:Task Manager 和 PerfMon。这两个工具都随 Windows 一起提供,因此由此起步比较容易。

Task Manager

Task Manager 是一种非常见的 Windows 进程监控程序。您可以通过熟悉的 Ctrl-Alt-Delete 组合键来启动它,或者右击任务栏。Processes 选项卡显示了最详细的信息,如图 2 所示。

图 2. Task Manager 进程选项卡

图 2 中显示的列已经通过选择 View -- Select Columns 作了调整。有些列标题非常含糊,但可以在 Task Manager 帮助中找到各列的定义。和进程内存使用情况关系最密切的计数器包括:

Mem Usage(内存使用):在线帮助将其称为进程的工作集(尽管很多人称之为驻留集)——当前在主存中的页面集。但是这个数值包含能够和其他进程共享的页面,因此要注意避免重复计算。比方说,如果要计算共享同一个 DLL 的两个进程的总内存占用情况,不能简单地把“内存使用”值相加。

Peak Mem Usage(内存使用高峰值):进程启动以来 Mem Usage(内存使用)字段的最大值。

Page Faults(页面错误):进程启动以来要访问的页面不在主存中的总次数。

VM Size(虚拟内存大小):联机帮助将其称为“分配给进程私有虚拟内存总数。”更确切地说,这是进程所 提交的内存。如果进程保留内存而没有提交,那么该值就与总地址空间的大小有很大的差别。

虽然 Windows 文档将 Mem Usage(内存使用)称为工作集,但在该上下文中,它实际上指的是很多人所说的驻留集(resident set),明白这一点很重要。您可以在 Memory Management Reference 术语表(请参阅 参考资料)中找到这些术语的定义。 工作集 更通常的含义指的是一个逻辑概念,即在某一点上为了避免分页操作,进程需要驻留在内存中的那些页面。

PerfMon

随 Windows 一起提供的另一种 Microsoft 工具是 PerfMon,它监控各种各样的计数器,从打印队列到电话。PerfMon 通常在系统路径中,因此可以在命令行中输入 perfmon 来启动它。这个工具的优点是以图形化的方式显示计数器,很容易看到计数器随时间的变化情况。

请在 PerfMon 窗口上方的工具栏中单击 + 按钮,这样会打开一个对话框让您选择要监控的计数器,如图 3a 所示。计数器按照 性能对象分成不同的类别。与内存使用关系最密切的两个类是 Memory 和 Process。选中计数器然后单击 Explain 按钮,就可以看到计数器的定义。说明出现在主对话框下方弹出的单独的窗口中。

java监控window的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java监控granf、java监控window的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-12,除非注明,否则均为首码项目网原创文章,转载请注明出处。