Имя: Пароль:
1C
 
Можно ли через WinAPI прибить окошечко "Текущие/Накопленные вызовы"?
0 Dmitry1c
 
25.03.16
11:23
Можно ли через WinAPI прибить окошечко "Текущие/Накопленные вызовы"?

Наверное плохо пытался сделать, но через WinAPI у меня вообще не получалось делать что-либо с окнами 1С.

Гуру, подскажите. Оно меня вымораживает. Окошки 1С через WinAPI вообще неподконтрольные.
1 Любопытная
 
25.03.16
11:23
а просто отключить не судьба?
2 Dmitry1c
 
25.03.16
11:24
(1) ты видимо не во франче работаешь, либо на проекте.
3 Dmitry1c
 
25.03.16
11:25
Поидее мне надо получить Handler'ы всех окон и прибить нужные.

Кто-нибудь сталкивался с такой задачей?
4 regniws
 
25.03.16
11:25
Настройки - Запуск 1С - Дополнительные - Отображать показатели
5 Dmitry1c
 
25.03.16
11:26
(4) и так для каждой 20й базы за день?
6 Dmitry1c
 
25.03.16
11:26
(4) эта галка не работает для новых баз.
7 Dmitry1c
 
25.03.16
11:27
(6) т.е. её нужно ставить для каждой базы отдельно
8 regniws
 
25.03.16
11:27
(7) Запускать не отладкой значит
9 Dmitry1c
 
25.03.16
11:27
Хм, может быть, где-то в реестре ключ хранится для этой настройки для каждой базы и можно править реестр, а не убивать через WinAPI
10 Dmitry1c
 
25.03.16
11:28
(8) отлаживать без отладчика - отличное решение.
11 Любопытная
 
25.03.16
11:29
Блин. Хотела уже обидеться, а потом поняла - я действительно уже ушла от того, чтобы по 20 новых баз в день открывать))
12 regniws
 
25.03.16
11:29
(10) не представляю работы 20 баз с отладчиком.
13 Cyberhawk
 
25.03.16
11:31
"где-то в реестре ключ хранится для этой настройки для каждой базы и можно править реестр, а не убивать через WinAPI" // Нет, это все хранится только в каталогах служебных файлов в разрезе каждой инфобазы
14 Dmitry1c
 
25.03.16
11:31
(13) так так, а поподробнее? в AppData?
15 Карупян
 
25.03.16
11:33
Раз в конфигуратор заходишь - значит можно зайти на на закладки настройки.
Без конфигуратора такое окошко не отображается
16 Dmitry1c
 
25.03.16
11:34
Хм, а еще можно отHEXредакторить платформу, только найти то место, где хранится значение этого флажка для новых баз...

Ох, что же все так через... одно место.
17 Dmitry1c
 
25.03.16
11:35
Кто-нибудь в практических целях использует эти счетчики производительности?
18 Многолетний Апельсин
 
25.03.16
11:36
Скомпилировать код к экзэшник, и положить в автозапуск например.
http://pastebin.com/0gvKf7d7
19 Fish
 
25.03.16
11:37
(16) Чтобы не через одно место, есть специальная галочка. Но есть любители всё делать через "одно место". :)
20 Любопытная
 
25.03.16
11:38
(17) Да, пару раз смотрела внимательно, когда надо было оптимизировать все, что можно и неможно)
21 Dmitry1c
 
25.03.16
11:45
(18) благодарю
22 Dmitry1c
 
25.03.16
11:46
(18) а ты проверял, у тебя работает? Я примерно тоже самое писал, но на шарпе.
23 Cyberhawk
 
25.03.16
11:50
24 Serginio1
 
25.03.16
11:51
(22) Там разные окна. Семерочные например так ищутся

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ПоискОкна
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Text;

    public static class НайтиОкно
    {
        private const uint WM_GETTEXT = 0x000D;

        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam);

        private static IEnumerable<IntPtr> EnumerateProcessWindowHandles(Process process)
        {
            var handles = new List<IntPtr>();

            foreach (ProcessThread thread in process.Threads)
            {
                EnumThreadWindows(thread.Id, (hWnd, lParam) =>
                {
                    handles.Add(hWnd);
                    return true;
                }, IntPtr.Zero);
            }

            return handles;
        }

        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam);

        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        private static extern int GetClassName(
                IntPtr hWnd,
                StringBuilder lpClassName,
                int nMaxCount
                );
        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern bool IsWindowVisible(IntPtr hWnd);


        public static void ПоказатьОкно(string НазваниеОкна)
        {
           string Заголовок="1С:Предприятие";

            foreach (var processRunning in System.Diagnostics.Process.GetProcesses())
            {
                if (processRunning.ProcessName.StartsWith("1cv7"))
                    foreach (IntPtr handle in EnumerateProcessWindowHandles(processRunning))
            {
                var wndCaption = new StringBuilder(1000);
                SendMessage(handle, WM_GETTEXT, wndCaption.Capacity, wndCaption);
                if (wndCaption.Length >= Заголовок.Length)
                        if (wndCaption.ToString(0,Заголовок.Length)==Заголовок)
                            if (!IsWindowVisible(handle))
                             ShowWindow(handle, 5);

         //       var wndClass = new StringBuilder(255);
         //       GetClassName(handle, wndClass, wndClass.Capacity);

            //    Console.WriteLine("[{0:X8}] '{1}' '{2}'", handle, wndCaption, wndClass);
            }
           // Console.ReadLine();
            }
        }

        #region Nested type: EnumThreadDelegate

        private delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);

        #endregion
    }
}
25 Broadbread
 
25.03.16
11:54
26 Dmitry1c
 
25.03.16
11:54
(25) спасибо, пригодится
27 Serginio1
 
25.03.16
11:57
А вообще можешь через глобальный контекст получить главное окно и пройтись по окнам
http://rsdn.ru/forum/pda/2953653.flat
http://catalog.mista.ru/public/457898/
28 trad
 
25.03.16
13:47
(0) 1000р, Снегопат и скрипт в одну строку
29 orefkov
 
25.03.16
13:51
+(28)

profileRoot.setValue("Launch/ShowServerCallCounter", false)
30 Карупян
 
25.03.16
13:53
(29) Этот скрипт нужно вручную запускать на каждой базе?
31 orefkov
 
25.03.16
13:58
(30)
Зачем?
Вписать эту строчку в файл с расширением js, прописать в автозагрузку снегопату, он сам будет запускаться при открытии базы.
32 ЧеловекДуши
 
25.03.16
14:10
(0) Для 1С 8.ххх не уверен, что получится :)
33 Dmitry1c
 
25.03.16
14:12
мне кажется Orefkov договорился с 1С :)
34 orefkov
 
25.03.16
14:17
(32)
Только что с trad'ом проверили (29) - работает.
(33)
Чтобы "поймать" 1С, надо думать, как 1С :)
35 trdm
 
25.03.16
14:32
(24) Пользуйся пастебином. Нафига такие портянки фигачить?
36 Serginio1
 
25.03.16
14:35
(35) Лениво
37 trdm
 
25.03.16
14:40
(36) Лечись от лени.
38 Broadbread
 
25.03.16
14:42
(36) Читаю ваши sql разборы на rsdn. Складывается мнение: о существовании параметризованных запросов и хранимых процедур там никто не в курсе.
39 Serginio1
 
25.03.16
14:48
(37) Спасибо (25)
(38) Спасибо за 25.
Знают. Там проблема в том, что С++ ники против любого оверхедаи считают, что Linq to EF это ненужный продукт, из-за того что тратится время на на разбор дерева в рантайме, а не на этапе компиляции.
На что я им привожу пример 1С. А на Linq кстати писать еще легче чем на 1С. Хранимых процедуры тоже мапятся на SQL
http://metanit.com/sharp/entityframework/5.3.php
http://metanit.com/sharp/entityframework/5.2.php
40 Serginio1
 
25.03.16
14:49
(38) Кстати спасибо за наводку. Приведу как пример.
41 Dmitry1c
 
25.03.16
14:50
(18) сделал

Если кому надо - пользуйтесь.

http://rghost.ru/7HHPmGvXK
42 Dmitry1c
 
25.03.16
14:53
(38) дык хранимых процедур нету в 1С
43 trdm
 
25.03.16
14:56
(39) > Там проблема в том, что С++ ники против любого оверхеда.

Ну и правильно. Вы начните работать поинтенсивнее, тоже будете против оверхеда.
Не люблю когда комп тормозит. И юзеры не любят.. А верхед этому очень способствует.
44 trdm
 
25.03.16
14:57
(42) Есть возможность с ними работать. в клюшках это используется.
45 Serginio1
 
25.03.16
15:00
40+ кстати была тема про использование нестандартных функций в тапросе типа
https://msdn.microsoft.com/ru-ru/library/dd456857(v=vs.100).aspx
46 Serginio1
 
25.03.16
15:04
(43) Ну а Linq to EF по сравнению с 1С оверхеда вообще нет.
Да и в большинстве то Linq применяется в Asp.Net. Так, что твой комп особенно то не тормозит.
А на декстопе по сравнению с 1С ты их не заметишь. Зато скорость разработки в десятки выше чем на С++
47 trdm
 
25.03.16
15:07
(46) Net - уже сам по себе оверхед )))
48 trdm
 
25.03.16
15:08
(46) > Зато скорость разработки в десятки выше чем на С++

Ты уж поищи идиотов где-нибудь в другом месте для развеса такой лапши.
49 Serginio1
 
25.03.16
15:11
(47) Угу.
(48) Угу. Поче му же 1С впереди планеты всей?
40+ http://stackoverflow.com/questions/29517627/entity-framework-6-code-first-custom-functions
50 Serginio1
 
25.03.16
15:16
51 trdm
 
25.03.16
15:17
(49) > Поче му же 1С впереди планеты всей?

Потому что там кодинг такого уровня что с ним и средний школьник справится.
52 trdm
 
25.03.16
15:18
var locations = context.Locations.Where(e => Functions.LatLongDistanceCalc(e.Lat, e.Long, lat, long) >= 10)

Разве от такого не должно тошнить?
53 Serginio1
 
25.03.16
15:24
(52) А тебя от листинга на С++ не тошнит?
Нормальный код. Передается функция отбора. Чего тебя так коробит? Функциональный подход
54 Serginio1
 
25.03.16
15:25
(51) И почему то особо нет криков на оверхед. А тут .Net уже тормоза.
55 Serginio1
 
25.03.16
15:30
(52) Есть другой синтаксис
var locations =  from e in context.Locations

                       where Functions.LatLongDistanceCalc(e.Lat, e.Long, lat, long) >= 10

                        select e

Какой нравится, такой и выбирай. Бывает совмещение
56 Локи-13
 
25.03.16
15:35
(5) 20 баз в день? зачем тебе 20 новых баз в день в отладчике?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.