Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634

Обновление рабочего стола

26.07.2015, 20:40. Показов 2353. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Встал вопрос после создания/удаления ярлыков на рабочем столе обновить последний.

Все что нашел на форуме, так это пример "по F5" и под NET...
VB.NET
1
2
3
4
5
6
7
Declare Auto Function FindWindow Lib "User32.Dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    Declare Auto Function SetForegroundWindow Lib "User32.Dll" (ByVal hWnd As IntPtr) As Boolean
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Des As IntPtr = FindWindow("Progman", "Program Manager")
        SetForegroundWindow(Des)
        SendKeys.SendWait("{F5}")
    End Sub
Никто не поможет, тоже под VB6?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.07.2015, 20:40
Ответы с готовыми решениями:

Отображение удаленного рабочего стола
Как сделать, так чтобы в picturebox, ну или хоть в чём отображался другой(удалённый) рабочий стол?

Как получить hWnd рабочего стола?
(конкретно окна, где рисуеться фоновое изображение винды)

Как узнать разрешение рабочего стола
Как узнать разрешение рабочего стола?

15
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
26.07.2015, 22:16
Лучший ответ Сообщение было отмечено kreotodr как решение

Решение

Цитата Сообщение от kreotodr Посмотреть сообщение
так это пример "по F5"
По F5 это ну очень не красивый способ. Есть же цивилизованные метод API SHChangeNotify:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Option Explicit
 
Private Const SHCNE_ASSOCCHANGED As Long = &H8000000
Private Const SHCNF_IDLIST As Long = &H0
 
Private Declare Function SHChangeNotify Lib "Shell32.dll" (ByVal wEventID As Long, _
ByVal uFlags As Long, ByVal dwItem1 As Long, ByVal dwItem2 As Long) As Long
 
Private Sub Command1_Click()
' обновить рабочий стол
Call SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)
 
End Sub
2
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
27.07.2015, 07:10  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
цивилизованные метод API SHChangeNotify
Цитата Сообщение от Pro_grammer Посмотреть сообщение
тод API SHChangeNotify:
Спасибо!
И откуда вы все это знаете....????

Добавлено через 15 минут
Пробовал утром на Win10, не работает...
Может все таки F5 подправите?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.07.2015, 08:47
Цитата Сообщение от kreotodr Посмотреть сообщение
на Win10, не работает
А она уже официально вышла?
Вот код VB6
Visual Basic
1
2
3
4
5
6
7
8
9
10
Option Explicit
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Private Sub Command1_Click()
Dim Des As Long
Des = FindWindow("Progman", "Program Manager")
SetForegroundWindow (Des)
SendKeys "{F5}"
End Sub
Но тут ещё тоже вопрос именами в W10 "Progman", "Program Manager"...

Добавлено через 28 минут
Маленько погуглил на эту тему ( SHChangeNotify ). Вот что обнаруживается, начиная с Win8. Если в таскбаре выставлен режим "Never Combine" то иконки обновляются, если же выставлено "Always Combine" то нет.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
27.07.2015, 08:51  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А она уже официально вышла?
Еще нет, но последний Билд 10240 вроде как RТМ. Покрайней мере так говорят и 29/07/15 будет именно он.
Он стабильный стоит у меня уже примерно две недели...Все летает, реально летает...
За код спасибо..
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
27.07.2015, 13:57

Не по теме:


Цитата Сообщение от kreotodr Посмотреть сообщение
но последний Билд 10240 вроде как RТМ
RTM Escrow, тобишь предрелиз.



Делаю так, т.е. со страховками:

Visual Basic
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
' Обновить кеш иконок
Public Sub RefreshLNK()
    On Error GoTo ErrorHandler
    
    SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_FLUSH, 0&, 0&
    
    Const CLSIDSTR_ActiveDesktop As String = "{75048700-EF1F-11D0-9888-006097DEACF9}"
    
    Dim CLSID_ActiveDesktop As UUID
    Dim IID_IUnknown        As UUID
    Dim oUnknown            As IUnknown
    Dim oActiveDesktop      As IActiveDesktop
    
    CLSIDFromString StrPtr(CLSIDSTR_ActiveDesktop), CLSID_ActiveDesktop
    CLSIDFromString StrPtr(IIDSTR_IUnknown), IID_IUnknown
    
    If S_OK = CoCreateInstance(CLSID_ActiveDesktop, 0&, CLSCTX_INPROC_SERVER, IID_IUnknown, oUnknown) Then
 
        Set oActiveDesktop = oUnknown
        
        oActiveDesktop.ApplyChanges AD_APPLY_ALL
        
        On Error Resume Next
        oActiveDesktop.ApplyChanges AD_APPLY_ALL Or AD_APPLY_FORCE
        
        If Err.Number <> 0 Then
            On Error GoTo ErrorHandler
            'SendF5toDesktop    ' так нельзя. Вызывает нежелательный артифакт: ярлыки накладываются друг на друга.
                                ' Следует вызывать F5 через некоторое время. Вставил код после того, как
                                ' пользователь нажмет ОК в сообщении с результатом лечения.
        End If
    
        Set oActiveDesktop = Nothing
        Set oUnknown = Nothing
    End If
    
    Exit Sub
ErrorHandler:
    AppendErrorLogFormat Now, Err, "Parser.RefreshLNK"
    Resume Next
End Sub
 
Public Sub SendF5toDesktop()
    Const GW_CHILD      As Long = 5&
    Const WM_KEYDOWN    As Long = 256&
    Const VK_F5         As Long = &H74&
    
    Dim hwnd                As Long
    Dim HwndChild           As Long
    
    hwnd = FindWindow("Progman", "Program Manager")
   
    HwndChild = GetWindow(hwnd, GW_CHILD)
    
    If HwndChild Then
        PostMessage HwndChild, WM_KEYDOWN, VK_F5, 1&
    End If
End Sub
Все, что написано в комментариях так и есть, т.к. проверено на практике.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
27.07.2015, 15:08  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Делаю так, т.е. со страховками:
Спасибо, почти диссертация... По f5 впринципе работает..Но буду использовать Ваш.
Для полной красоты думаю не помешает добавить Err.Clear....

Добавлено через 27 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
RTM Escrow, тобишь предрелиз.
Спорить не буду, но "знающие" говорят, что РТМ уже как такового нет, и что именно 10240 будет релизным..
0
27.07.2015, 20:18

Не по теме:


Цитата Сообщение от kreotodr Посмотреть сообщение
Спорить не буду, но "знающие" говорят, что РТМ уже как такового нет, и что именно 10240 будет релизным..
Они говорят так, потому что партию с предустановленной виндой уже отгрузили,
следовательно дыры будут латать уже на ходу. А значит спешить объявлять о выходе RTM уже незачем. Сроки сгорели. Допилят как нибудь в следующему году, как разгребут миллион багов по формам обратной связи.

0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
27.07.2015, 21:23
Нужно передавать флаг SHCNE_ALLEVENTS и корректный PIDL.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
27.07.2015, 22:17  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
ой виндой уже отгрузи
По сути да..
Если учесть что будет 4-6 сервис пуков на пртотяжении обещанных 10 лет поддержки...
С NT4 помоему было 6 если не ошибаюсь

Добавлено через 20 секунд
Цитата Сообщение от Dragokas Посмотреть сообщение
ой виндой уже отгрузи
По сути да..
Если учесть что будет 4-6 сервис пуков на пртотяжении обещанных 10 лет поддержки...
С NT4 помоему было 6 если не ошибаюсь
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
18.09.2015, 19:30  [ТС]
Коллеги подскажите как реализовать аналогичную задачу, но не для рабочего стола а для области уведомления (трей) Задача снята, но значек висит и уйдет он только тогда, когда на него навести мышь. Может можено как то "рефрешнуть" ?
Миниатюры
Обновление рабочего стола  
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.09.2015, 20:41
Цитата Сообщение от kreotodr Посмотреть сообщение
Задача снята, но значек висит
Если правильно написан код, то этой проблемы нет
В Sub Form_Unload надо прописать что то типа Shell_NotifyIcon(NIM_DELETE, IconData)
Тогда иконка пропадет вместе с завершением программы.
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
18.09.2015, 21:00
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Если правильно написан код…
В Win XP значок висит почти у любого приложения (до наведения мыши на уже выключенное).

Pro_grammer, а всё ж любопытно:
Цитата Сообщение от kreotodr Посмотреть сообщение
откуда вы все это знаете…
Я, например, тренировался на «студенческих» и секретарских* и в такие глубины не лез.
________________
* сегодня День секретаря!
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
22.09.2015, 08:55  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
В Sub Form_Unload надо прописать что то типа Shell_NotifyIcon(NIM_DELETE, IconData)

нет примера(ов) на эту тему?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.09.2015, 09:22
Цитата Сообщение от kreotodr Посмотреть сообщение
примера(ов) на эту тему
Вот пример, иконка корректно удаляется при выходе из программы или кнопкой при работе программы.
Вложения
Тип файла: zip Sys2.zip (3.1 Кб, 9 просмотров)
2
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
22.09.2015, 20:50  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2015, 20:50
Помогаю со студенческими работами здесь

Код для смены заставки рабочего стола.
Люди, кто напишет мне действуйщий код того, как можно сменить фон рабочего стола, тот получит бесплатно мою прогу Olga v1.0!!!

Смена фонового изображения рабочего стола программно
Для этого я использую API-функцию SystemParametersInfo: Option Explicit Const SPI_SETDESKWALLPAPER = 20 Const...

Как сделать .avi-файл фоном рабочего стола?
Как сделать .avi-файл фоном рабочего стола? Т. е чтобы под иконками, программами и т. д. воспроизводилось изображение?

Как картинку сделать фоновой рабочего стола Windows'а?
Как картинку сделать фоновой рабочего стола Windows''а? Спасибо.

Обновление рабочего стола
Пробовал обновить рабочий стол таким образом: &lt;DllImport(&quot;Shell32.dll&quot;, CharSet:=CharSet.Auto)&gt; _ Private Shared Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru