spt/qk30ic/KEEPALIVE.cs
2025-09-19 18:34:20 +09:00

127 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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();
}
}
}