Функция обработчика событий игнорирует некоторые функции

#c# #winforms #powerpoint

#c# #winforms #powerpoint

Вопрос:

Я использую класс globalhook из code project для управления слайд-шоу powerpoint с помощью пользовательских клавиш (приложение Windows form) Я хочу, чтобы объект powerpoint закрывался при нажатии любой клавиши, но обработчик событий игнорирует эту функцию и отказывается выполнять какие-либо действия, если это не входит в область действия основной формы. вот мой код:

 public partial class Form1 : Form
{
    PowerPoint.Application objApp;
    PowerPoint.Presentations objPresSet;
    PowerPoint._Presentation objPres;
    PowerPoint.Slides objSlides;
    PowerPoint._Slide objSlide;

    public Form1()
    {
        InitializeComponent();
        UserActivityHook actHook;
        objApp = new PowerPoint.Application();
        actHook = new UserActivityHook(); // crate an instance with global hooks

        // hang on events

        actHook.KeyPress  = new KeyPressEventHandler(MyKeyPress);
        objPresSet = objApp.Presentations;
        objPres = objPresSet.Add(MsoTriState.msoTrue);

        objSlides = objPres.Slides;
    }

    [STAThread]
    public static void Main(string[] args)
    {
        Application.Run(new Form1());
    }

    // UserActivityHook actHook;

    public void MyKeyPress(object sender, KeyPressEventArgs e)
    {
        Form2 Form2 = new Form2();

         button1.Hide(); //executes normally 
         Form2.Show(); //no action
         objApp.Quit(); // no action
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 Form2 = new Form2();
        Form2.Show();
    }   
}
  

Комментарии:

1. я успешно запустил функции Form2.Show (); objApp.Quit () в режиме отладки и поставил точку останова на button1. Скрыть (); затем, нажав клавишу F10, следующие две функции выполняются успешно, но когда я запускаю ее, просто выполняю button1. Hide() и игнорирует две другие. даже не ошибка или исключение. пожалуйста, помогите

Ответ №1:

Попробуйте использовать класс HookManager из здесь, у меня это отлично работает.

Комментарии:

1. я уже использую этот класс, но версии 1, потому что версия 2 имеет некоторые проблемы, и это демонстрационный проект выдает исключение.

2. это работает, но когда обработчик событий имеет функцию, связанную с объектом приложения objapp powerpoint, функция игнорируется. спасибо