2

我的申请有很大的问题windows server 2008 R2.

该应用程序可以运行.NET framework 3.5,据我所知,windows server 2008 R2 包含这样一个框架。

应用程序本身非常庞大,它是一个服务器程序,用于记录员工的工作时间,通过条形码扫描仪,然后将其存储在 . xml文件,它也会update.xml每隔几分钟从文件中更新一次。

为了避免让这个应用程序一直处于焦点,我使用了一些方法来捕获按键而不关注应用程序。

所以对于我的问题,应用程序正在正确启动,它也在正确读取代码并识别它们,但应用程序显然在“break:”和“return”方面存在问题,它根本没有在里面启动我的方法之一我的程序。(这是没有任何参数的简单静态 void 方法)

我是否必须重写整个程序以使其在不调用方法和所有中断和返回的情况下工作?或者是什么问题。这对我来说很重要,截止日期或多或少是今天。我还可以补充一点,这个应用程序在其他电脑上运行良好,当我在我的电脑上调试它时,它也能按预期工作。

我不会在这里发布整个代码,它太庞大了,但我可以发布其中的一部分来帮助你们。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.Xml;
using System.IO;
using System.Threading;
using System.Data;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using Microsoft.Win32;
using System.Reflection;
using System.Security.AccessControl;

    static void Main()
    {
        var handle = GetConsoleWindow();
        ShowWindow(handle, SW_HIDE);
        appPath = Path.GetDirectoryName(Application.ExecutablePath);

        if (AutoStarter.IsAutoStartEnabled == false)
        {
            AutoStarter.SetAutoStart();
        }

        if (!Directory.Exists(appPath+"\\Raporty"))
        {
            Directory.CreateDirectory(appPath + "\\Raporty");
        }

        if (!File.Exists(appPath+"\\settings.jsn"))
        {
        utworzsetting();
        }
        sprawdzostatniawersje();
        uaktualnij();
        _hookID = SetHook(_proc);
        Application.Run();
        UnhookWindowsHookEx(_hookID);
     }





    private delegate IntPtr LowLevelKeyboardProc(
    int nCode, IntPtr wParam, IntPtr lParam);





    private static IntPtr HookCallback(
        int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);

            switch (vkCode)
                {
                   case 48:
                     wiersz = "";
                     break;
                   case 49:
                     wiersz += "1";
                     break;
                   case 50:
                     wiersz += "2";
                     break;
                   case 51:
                     wiersz += "3";
                     break;
                   case 52:
                     wiersz += "4";
                     break;
                   case 53:
                     wiersz += "5";
                     break;
                   case 54:
                     wiersz += "6";
                     break;
                   case 55:
                     wiersz += "7";
                     break;
                   case 56:
                     wiersz += "8";
                     break;
                   case 57:
                     wiersz += "9";
                     break;
                   case 13:
                     if (wiersz != null)

几个“如果”

最后

                             if (aktualneID != -1) // Jezeli ID znajduje sie bazie danych
                         {
                             // MySettings settings = MySettings.Load(appPath + "\\settings.jsn");
                             if (settings.limit == true && lPracownik[aktualneID].Dni.Count != 0)
                             {
                                 czymoze();
                                 if (niemoze == false)
                                 {
                                     Console.WriteLine("z limitem");
                                     asdf();
                                     Console.WriteLine("nie wywolalem metody");
                                 }
                             }
                             else
                             {
                                 Console.WriteLine("bez limitu");
                                 asdf();
                                 Console.WriteLine("nie wywolalem metody");
                             }
                         }
                     }
                            wiersz = "";
                            zapiszbaze();
                     break;
                   default:
                     break;

这就是问题所在,应用程序到了这一刻"Console.WriteLine("bez limitu");",就是这样,它没有启动 " asdf" 方法,它也没有运行 wiersz = "";

如果您还有任何问题,我将不胜感激任何帮助,希望我指定一些事情只是告诉。

PS。我正在使用VS 2010 Express,如果您认为可以帮助我,我可以将整个解决方案发送给您。

4

1 回答 1

1

问题解决了,这是 .NET 框架故障,我已经在服务器上重新安装了它,一切都像一个魅力。

于 2012-09-04T11:48:12.037 回答