Faire un processus en cours d'exécution dans la Fenêtre active

Ok, donc j'ai trois bases de données Microsoft Access. Je veux être en mesure de basculer entre ces par programmation. J'ai une méthode void qui accepte un paramètre de chaîne appelée dbName (mon nom de base de données).

public void SwitchDatabase(string dbName)
{

}

Je sais ce que le MainWindowTitle de ma Base de données Access, et chaque base de données a un autre MainWindowTitle donc je peux créer un tableau de la classe de Processus et de faire de cette égalité Système.Diagnostics.Processus.GetProcesses(). Je peux ensuite faire une boucle par mon processus en cours d'exécution jusqu'à ce que je trouve de l'endroit où l'ProcessName est MSACCESS et la MainWindowTitle est correct comme suit:

Process[] processList = Process.GetProcesses();

foreach (Process theProcess in processList)
{
    string processName = theProcess.ProcessName;
    string mainWindowTitle = theProcess.MainWindowTitle;
}

Une fois que j'ai trouver cela, je peux alors récupérer l'ID de Processus, et maintenant je veux faire de ce processus de ma fenêtre active. Comment puis-je faire cela?

Grâce

  • Que faire si la .laccdb est créé parce que quelqu'un a ouvert la base de données avec Accès à la place de votre application? Ou si le fichier existe, car l'application qui a ouvert il s'est écrasé avant de le nettoyer? Je ne pense pas que c'est un moyen fiable de travail.
  • Ok, le noeud du problème est de passer à une base de données qui je pense est libre, donc si elle ne l'est pas, il va lever une exception que je peux gérer
  • Combiné avec les informations de l'Eric de réponse ci-dessous, le lien suivant m'a aidé à obtenir ce travail - stackoverflow.com/questions/4566632/...
InformationsquelleAutor JMK | 2012-02-16