J'ai récemment commencé à coder en C# (en mai de cette année) et je trouve qu'il est préférable d'apprendre en travaillant avec du code. cette demande http://www.c-sharpcorner.com/UploadFile/satisharveti/ActiveApplicationWatcher01252007024921AM/ActiveApplicationWatcher.aspx. J'essaye de le recréer cependant le mien sauvera l'information dans une base de données de sql (nouveau à ceci aussi bien). J'ai cependant quelques problèmes de codage car il ne fait pas ce que je m'attends à faire. C'est le code principal que j'utilise.J'essaye de créer un observateur d'application de fenêtres?
private void GetTotalTimer()
{
//This gets the window that a user has open
SqlConnection RConn = new SqlConnection(@"server=ANDILE-PC;Initial Catalog=Log Records;Integrated Security=SSPI;");
string Connstring = RConn.ToString();
DateTime now = DateTime.Now;
IntPtr hwnd = APIFunc.getforegroundWindow();
Int32 pid = APIFunc.GetWindowProcessID(hwnd);
Process p = Process.GetProcessById(pid);
appName = p.ProcessName;
string time = now.ToString();
const int nChars = 256;
int handle = 0;
StringBuilder Buff = new StringBuilder(nChars);
handle = GetForegroundWindow();
appltitle = APIFunc.ActiveApplTitle().Trim().Replace("\0", "");
string queryString = "Select Top 1[Window Title] FROM [TimerLogs]";
using (RConn)
{
using (SqlCommand command = RConn.CreateCommand())
{
command.CommandText = queryString;
RConn.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string windowtitle = reader["Window Title"].ToString();
if (appltitle != windowtitle)
{
endTime = DateTime.Now;
appduration = endTime.Subtract(startTime);
cmd = new SqlCommand("insert into [TimerLogs] values (@time,@appName,@appltitle,@Elapsed_Time,@userName)", RConn);
cmd.Parameters.AddWithValue("@time", time);
cmd.Parameters.AddWithValue("@appName", appName);
cmd.Parameters.AddWithValue("@appltitle", appltitle);
cmd.Parameters.AddWithValue("@Elapsed_Time", appduration.ToString());
cmd.Parameters.AddWithValue("@userName", userName);
cmd.ExecuteNonQuery();
RConn.Close();
}
}
reader.Close();
}
RConn.Close();
}
}
}
Malheureusement, ceci est le résultat. il ne sauvegarde pas les données comme je le souhaite. Qu'est-ce que je fais de mal Je pensais qu'avec le lecteur sql, il vérifiait d'abord une valeur et ne sauvegardait que s'il ne correspondait pas, mais il enregistre s'il y a correspondance ou non.
mon lecteur retourne « {} System.Data.SqlClient.SqlDataReader » au lieu des données du tableau
Vous devez apprendre à utiliser les fonctionnalités de débogage de votre IDE. Définir un point d'arrêt, puis parcourir le code ligne par ligne et voir ce qu'il fait. – mason
votre if (appltitle! = Lecteur.ToString()) condition toujours vrai vérifier correctement –
Je suis nouveau à la fois C# et sql donc au lieu de simplement voter vers le bas de l'utilisation de certaines critiques constructives parce que vos votes aident à rien, je vouloir comprendre cette langue encore en essayant de tout ce que je reçois sont des votes en bas. Comment est-ce utile si j'ai fait une erreur le signaler aveuglément vers le bas-vote ne aide personne –