powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
9 сообщений из 9, страница 1 из 1
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37651578
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долго думал как на форме при просмотре фотографий получить эффект плавной смены картинок и тут понял, что у нас всех есть универсальный форма с контролом для воспроизведения, хоть картинок, хоть анимации...
Это стандартная заставка Windows... но как ею управлять через VBA?
1.Как программно запустить ее?
2.Как программно запретить закрытие при шевелении мышки?
3.Как ввести список-последовательность файлов?
4.Как программно закрыть (обойдя необходимость вводить пароль, при запароленном входе)?
5. Как совместить всплывающую картинку и текст в форме бегущей строки?
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37651789
Дмит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стандартная заставка Windows - если имеется ввиду хранитель экрана, то в VBA его не сделать :)
И есть куча программ, которые предназначены для изготовления слайд-шоу из ваших фото.
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37652439
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMK67Долго думал..."Что тут думать, тут прыгать надо".
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37654604
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я с этим месяц разбираться буду.... попробую тупо встроить себе на форму...
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37654697
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу разобраться с таймером
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Timer1_Timer()
 Set Image1.Picture = Pic1.Picture(pdEMF, bAlpha)
 Set Image2.Picture = Pic2.Picture(pdEMF, 255 - bAlpha)

 Dim Alpha As Integer
 Alpha = CntI(bAlpha) + DAlpha * SAlpha
 If Alpha > 255 Then
    If bAlpha = 255 Then
       bAlpha = 255 - DAlpha
       SAlpha = -1
    Else
       bAlpha = 255
    End If
 ElseIf Alpha < 0 Then
    If bAlpha = 0 Then
       bAlpha = DAlpha
       SAlpha = 1
    Else
       bAlpha = 0
    End If
 Else
    bAlpha = Alpha
 End If
End Sub




непонятный оператор:
Код: vbnet
1.
CntI(bAlpha)
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37654701
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMK67непонятный оператор:
Код: vbnet
1.
CntI(bAlpha)

проверь машину на предмет вирусов, которые букавки переставляют
в оригинале:
Код: vbnet
1.
Alpha = CInt(bAlpha) + DAlpha * SAlpha
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37655059
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMK67Не могу разобраться с таймером
...
непонятный оператор: CntI(bAlpha)bAlpha - коэффициент прозрачности, от 0 (полная прозрачность) до 255 (полная непрозрачность). Первые две строчки - загрузка в элементы управления Image1 и Image2 изображений с дополняющими друг друга коэффициентами прозрачности. Строки далее меняют текущий коэффициент для использования при следующем событии таймера. CInt() - функция явного преобразования числового значения к типу Integer (см. справку). В принципе, здесь компилятор преобразование типа сам сделает, исходя из типа следующего слагаемого, DAlpha * SAlpha, так что это перестраховка.DMK67Я с этим месяц разбираться буду...Вот попадает вам в руки какое-нибудь сложное устройство или программа, например, мобильник. Что, обязательно требуется знать уравнения Максвелла, радиотехнику, микроэлектронику, код прошивки, и т. д., чтобы начать им пользоваться? Нет. А вот интерфейс, хотя бы в минимальной степени - да. Здесь то же самое. Посмотрите на Public - описания модулей, чтобы получить представление, что они умеют делать, плюс пример использования (модуль формы), для этого много времени не надо.
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37656529
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, а что такое

Код: vbnet
1.
DrawBuffer = 1048576



опытным путем выяснил что варьируется от 16000 до 1048576 ?



Немного усовершенствовал код в форме для удобства пользования, ввел понятие шага и сдвига, чтобы удобнее было настраивать

Код: vbnet
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.
Option Explicit

Private WithEvents Timer1 As VBAProject.Timer
Private Pic1 As CDrawingSurface
Private Pic2 As CDrawingSurface
Private bAlpha As Integer
Private DAlpha As Integer
Private SHAG_1 As String
Private SDVIG_1 As String

Private Sub UserForm_Initialize()
 Set Pic1 = New CDrawingSurface
 Pic1.LoadPicture LoadPicture(ActiveWorkbook.Path & "\Boy&Horse.jpg")
 bAlpha = 255
 Set Image1.Picture = Pic1.Picture(pdEMF, bAlpha)
 TextBox1.Value = bAlpha
End Sub

Private Sub UserForm_Terminate()
 DeleteTimer1
End Sub

Private Sub Timer1_Timer()

Set Image1.Picture = Pic1.Picture(pdEMF, bAlpha)
Set Image2.Picture = Pic2.Picture(pdEMF, DAlpha)

If bAlpha >= SHAG_1 Then
bAlpha = bAlpha - SHAG_1
Else
bAlpha = 0
End If

If bAlpha < SDVIG_1 Then
If DAlpha <= 255 - SHAG_1 Then
DAlpha = DAlpha + SHAG_1
Else
DAlpha = 255
DeleteTimer1
End If
End If

TextBox1.Value = bAlpha
TextBox2.Value = DAlpha

End Sub
Private Sub CommandButton1_Click()
 Set Pic1 = New CDrawingSurface
 Pic1.LoadPicture LoadPicture(ActiveWorkbook.Path & "\Boy&Horse.jpg")
 Set Pic2 = New CDrawingSurface
 Pic2.LoadPicture LoadPicture(ActiveWorkbook.Path & "\Chateau.jpg")
' задаем прозрачность для Pic1
 bAlpha = 255
 ' задаем прозрачность для Pic2
 DAlpha = 0
  ' задаем шаг изменения прозрачности
 SHAG_1 = 30
' задаем границу прозрачности при которой еще
'не прекратилось "стирание" первой картинки,
'но уже началось проявление второй
 SDVIG_1 = 125

DrawBuffer = 1048576

 DeleteTimer1
 Set Timer1 = New VBAProject.Timer
 Timer1.Interval = 1
 Timer1.Enabled = True
End Sub

Private Sub DeleteTimer1()
  If Not Timer1 Is Nothing Then
    Timer1.Enabled = False
    Set Timer1 = Nothing
    DoEvents
 End If
End Sub
...
Рейтинг: 0 / 0
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
    #37656636
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного поправил код... но есть серьезная проблема: при размере файла более 200-300кБ - начинается торможение и мерцание... а как програмно уменьшить размер файла?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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