127 lines
3.6 KiB
C#
127 lines
3.6 KiB
C#
#define TRACE
|
||
#define DEBUG
|
||
using System;
|
||
using System.Diagnostics;
|
||
using System.IO;
|
||
using System.Management;
|
||
using System.Runtime.InteropServices;
|
||
using System.Threading;
|
||
using System.Windows.Forms;
|
||
|
||
namespace qk30ic;
|
||
|
||
public static class KEEPALIVE
|
||
{
|
||
public class AutoClosingMessageBox
|
||
{
|
||
private int text_max_length = 200;
|
||
|
||
private System.Threading.Timer _timeoutTimer;
|
||
|
||
private string _caption;
|
||
|
||
private const int WM_CLOSE = 16;
|
||
|
||
private AutoClosingMessageBox(string text, string caption, int timeout)
|
||
{
|
||
if (text.Length > text_max_length)
|
||
{
|
||
text = text.Substring(0, text_max_length);
|
||
}
|
||
_caption = caption;
|
||
_timeoutTimer = new System.Threading.Timer(OnTimerElapsed, null, timeout, -1);
|
||
MessageBox.Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
||
}
|
||
|
||
public static void Show(string text, string caption, int timeout)
|
||
{
|
||
new AutoClosingMessageBox(text, caption, timeout);
|
||
}
|
||
|
||
private void OnTimerElapsed(object state)
|
||
{
|
||
IntPtr intPtr = FindWindow(null, _caption);
|
||
if (intPtr != IntPtr.Zero)
|
||
{
|
||
SendMessage(intPtr, 16u, IntPtr.Zero, IntPtr.Zero);
|
||
}
|
||
_timeoutTimer.Dispose();
|
||
}
|
||
|
||
[DllImport("user32.dll", SetLastError = true)]
|
||
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
|
||
|
||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
||
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
|
||
}
|
||
|
||
public static System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
|
||
|
||
public static void TIM_Main()
|
||
{
|
||
timer.Tick += MyTimer;
|
||
timer.Interval = Convert.ToInt32(Form1.str_Confile[11]) * 1000;
|
||
timer.Enabled = true;
|
||
}
|
||
|
||
public static void MyTimer_stop()
|
||
{
|
||
timer.Enabled = false;
|
||
}
|
||
|
||
public static void MyTimer_start()
|
||
{
|
||
timer.Enabled = true;
|
||
}
|
||
|
||
public static void MyTimer(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
MyTimer_stop();
|
||
DateTime now = DateTime.Now;
|
||
string text = "";
|
||
string text2 = "";
|
||
string text3 = "";
|
||
string text4 = "";
|
||
string text5 = "";
|
||
Process currentProcess = Process.GetCurrentProcess();
|
||
ManagementClass managementClass = new ManagementClass("Win32_OperatingSystem");
|
||
ManagementObjectCollection instances = managementClass.GetInstances();
|
||
foreach (ManagementObject item in instances)
|
||
{
|
||
text3 = string.Format("{0:#,#}", item["FreePhysicalMemory"]);
|
||
item.Dispose();
|
||
}
|
||
instances.Dispose();
|
||
managementClass.Dispose();
|
||
text2 = $"{currentProcess.WorkingSet64 / 1000:#,#}";
|
||
DriveInfo driveInfo = new DriveInfo("C");
|
||
text4 = $"{driveInfo.TotalFreeSpace / 1024:#,#}";
|
||
text = "使用メモリ:[" + text2 + "]KB 空きメモリ:[" + text3 + "]KB 空きHDD容量:[" + text4 + "]KB";
|
||
if (Form1.str_Confile[15] == "1")
|
||
{
|
||
text5 = "INSERT INTO hardware_check_log (device_id, status, status_comment, created_at) VALUES (" + Form1.KpAlive_devid + ",2,'" + text + "','" + now.ToString() + "');";
|
||
Debug.WriteLine("キープアライブ追記MODE:" + text5);
|
||
}
|
||
else
|
||
{
|
||
text5 = "update hardware_check_log set status='1',status_comment='" + text + "',updated_at= '" + now.ToString() + "' where device_id = " + Form1.KpAlive_devid + " ORDER BY created_at DESC LIMIT 1;";
|
||
Debug.WriteLine("キープアライブ更新MODE:" + text5);
|
||
}
|
||
Form1.SO_DBKpAlive(text5);
|
||
Random random = new Random();
|
||
timer.Interval = Convert.ToInt32(Form1.str_Confile[11]) * 1000 + random.Next(60) * 1000;
|
||
Form1.SO_LogFileDelCheck();
|
||
MyTimer_start();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Debug.WriteLine("★★_ERROR_29");
|
||
Debug.WriteLine("キープアライブエラー");
|
||
Trace.WriteLine(ex.Message);
|
||
MyTimer_start();
|
||
}
|
||
}
|
||
}
|