powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запуск программы через правую кнопку в Windows
5 сообщений из 5, страница 1 из 1
Запуск программы через правую кнопку в Windows
    #36695904
Dima Freger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток.

Возник вопрос:

написал я программу, которая сохраняет файлы в базу данных. Т.е. пользователь в Винде нажимает на файл правой кнопкой, появляется меню с моим пунктом (в регистре создал ключ, где написано ключ - */shell/Save in Database/command; значение - МояПрограмма.exe %1) нажимаю на него и вызов моей программы с параметром! Все работает супер, НО:

если пользователь выделил 2, 3, 5 файлов, то стартует 2,3,5 экземпляров моей прораммы! А мне надо чтобы стартовал то 1 экземпляр и принимал как параметр все выделенные файлы!!! Но то что стоит в регистре %1 берет тока один!!!!!

Подскажите пожалуйста как стартовать только один экземпляр и главное как перенимать все выделенные файлы!

Спасибо за ответы!

п.с. RAR работает именно так, выделил 100 фалов они все перенимабтся как параметры но стартует один экземпляр программы!
...
Рейтинг: 0 / 0
Запуск программы через правую кнопку в Windows
    #36695968
Памас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Freger,
возможно, в "%1"
в регистри встречаются [open("%1")]
...
Рейтинг: 0 / 0
Запуск программы через правую кнопку в Windows
    #36695982
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть стоит порыться в Context Menu Handler'ах? Сам в этом деле помочь не могу, не приходилось юзать, но дальше думаю гугл поможет, зная куда копать
...
Рейтинг: 0 / 0
Запуск программы через правую кнопку в Windows
    #36696100
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно использовать DDE. Посмотрите например как сделаны ключи у Winamp. А если конечно сделать по-правильному, то нужно написать COM DLL расширения проводника. Нужно только соответствующий интерфейс реализовать
...
Рейтинг: 0 / 0
Запуск программы через правую кнопку в Windows
    #36699509
Dima Freger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLADНужно использовать DDE. Посмотрите например как сделаны ключи у Winamp. А если конечно сделать по-правильному, то нужно написать COM DLL расширения проводника. Нужно только соответствующий интерфейс реализовать

Спасибо большое за ответ, но честно сказать это для меня было бы слишком.....
Я выбрал простой путь (бездельника):
Описан он полностью тут:
http://www.hanselman.com/blog/CommentView.aspx?guid=d2f676ea-025b-4fd6-ae79-80b04a34f24c

или:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

using Microsoft.VisualBasic.ApplicationServices;

namespace VisualBasic
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            string[] args = Environment.GetCommandLineArgs();
            SingleInstanceController controller = new SingleInstanceController();
            controller.Run(args);

        }
    }

    public class SingleInstanceController : WindowsFormsApplicationBase
    {
        public SingleInstanceController()
        {
            IsSingleInstance = true;

            StartupNextInstance += this_StartupNextInstance;
        }

        void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
        {
            Form1 form = MainForm as Form1; //My derived form type
            form.LoadFile(e.CommandLine[1]);
        }

        protected override void OnCreateMainForm()
        {
            MainForm = new Form1();
        }
    }

}


using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace VisualBasic
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            string[] args = Environment.GetCommandLineArgs();
            LoadFile(args[1]);
        }

        public void LoadFile(string file)
        {
        textBox1.Text += file;
        }

    }
}

Еще раз всем спасибо!!!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запуск программы через правую кнопку в Windows
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]