시스템 트레이 응용 프로그램으로 실행되는 무형 응용 프로그램이 있습니다. 임 씨는 컴퓨터가 닫히거나 응용 프로그램이 닫힐 때 코드를 실행해야하는 번거 로움이 있습니다.프로그램 닫기 및 pc 종료시 실행할 코드
이 내가 무엇을 가지고 지금까지
class sysTrayIcon
{
public sysTrayIcon()
{
AppDomain.CurrentDomain.ProcessExit += new EventHandler(exitCode);
SystemEvents.SessionEnding += new SessionEndingEventHandler(exitCode);
}
public void exitCode(object sender, EventArgs e)
{
contactCman appClosing = new contactCman();
bool didWeSuceed = appClosing.stampUserOut();
if (didWeSuceed == false)
{
MessageBox.Show("Stamp out function run returned fail!!");
}
else
{
MessageBox.Show("Stamp out function run returned success");
}
}
}
class contactCman
{
public Dictionary<string, string> getUrlResponse(string toDo)
{
var url = mainSiteUrl + "/" + apiFileName + "?" + "userid=" + userid + "&pw=" + pw + "&toDo=" + toDo;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
WebHeaderCollection header = response.Headers;
var encoding = ASCIIEncoding.ASCII;
string responseText;
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
responseText = reader.ReadToEnd();
}
// key1=value1;key2=value2;key3=value3;
var responseData = responseText.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
.Select(part => part.Split('='))
.ToDictionary(split => split[0], split => split[1]);
return responseData;
}
public Dictionary<string, string> checkLastStamp()
{
string toDo = "getLastStamp";
Dictionary<string, string> urlResponse = getUrlResponse(toDo);
return urlResponse;
}
public bool stampUserOut()
{
Dictionary<string, string> usersLastStamp = checkLastStamp();
string valueOfKey;
if (usersLastStamp.TryGetValue("checkInOut", out valueOfKey) && (valueOfKey == "in"))
{
string toDo = "stampUserOut";
Dictionary<string, string> urlResponse = getUrlResponse(toDo);
if (urlResponse.TryGetValue("Message", out valueOfKey) && (valueOfKey == "Success!"))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
내 문제입니다 비주얼 스튜디오 내부 디버거를 통해 실행할 때 의도 한대로 (만하지만 가까운 프로그램 테스트) 작품 위의 코드. 내가 밖에 실행하면 메시지 상자가 나타나지 않습니다.
안녕하세요, 'SystemEvents.SessionEnding' 이벤트가 원하는 것일 수 있습니다. 루키 [여기] (http://social.msdn.microsoft.com/Forums/vstudio/en-US/ffd0b29b-4f89-4e4e-bcb7-863532203e89/shutdown-hook-in-c?forum=csharpgeneral) –