Cảnh Báo Notifycation API

Liên hệ QC

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,421
Được thích
4,033
Giới tính
Nam
1/ ý tưởng xuất phát từ chủ đề sau


2/ Rảnh thay vì chơi game thì Tôi chơi code cho vui thôi

3/ Úp đây cho ai thích thì sử dụng nó

4/ Tôi xuất Hàm API và COM song song ai iu cái chi dùng cái đó nó như nhau

5/ Sử dụng Từ VBA code như sau

Mã:
Dim IconType As Long

Sub IncrementIconTypeCounter()
    IconType = IconType + 1
End Sub

Sub Test_NotifyIcon()
    Dim TD As String
    Dim TB As String
    Dim ATimeout As Long
    ATimeout = 1
  
    Call IncrementIconTypeCounter
  
    TD = "Th" & ChrW(244) & "ng B" & ChrW(225) & "o"
    TB = "Gi" & ChrW(7843) & "i Ph" & ChrW(225) & "p Excel C" _
        & ChrW(244) & "ng C" & ChrW(7909) & " Tuy" & ChrW(7879) _
        & "t V" & ChrW(7901) & "i C" & ChrW(7911) & "a B" & ChrW(7841) & "n !"
    Call NotifyIconA(TD, TB, IconType, ATimeout)
  
    Range("A1").Value = IconType
End Sub

sau Khi chay code trên thì hình ảnh như sau ... Nếu ta chạy liên tục thì Icon sẽ thay đổi theo cho vui chút

1686060083503.png

6/ Sử dụng trên VB6 như sau

Mã:
Private Declare Function NotifyIconA Lib "NotifyIcon32.dll" _
          (ByRef title As Variant, ByRef msg As Variant, _
          ByVal IconType As Long, ByVal ATimeout As Long) As Variant
Rem ========================
Dim IconType As Long
Sub IncrementIconTypeCounter()
    IconType = IconType + 1
End Sub

Rem ========================
Private Sub Command1_Click()
    Dim result As Boolean
    Dim title As Variant
    Dim msg As Variant
    Dim ATimeout As Long
    ATimeout = 5
    Call IncrementIconTypeCounter
    Rem =========
    title = "Th" & ChrW(244) & "ng B" & ChrW(225) & "o"
    msg = "Gi" & ChrW(7843) & "i Ph" & ChrW(225) & "p Excel C" _
              & ChrW(244) & "ng C" & ChrW(7909) & " Tuy" & ChrW(7879) _
              & "t V" & ChrW(7901) & "i C" & ChrW(7911) & "a B" & ChrW(7841) & "n !"
    Rem =========
    result = NotifyIconA(title, msg, IconType, ATimeout)
    Rem =========
    If result Then
        Debug.Print "Notification sent successfully."
    Else
        Debug.Print "Failed to send notification."
    End If
End Sub

7/ khi viết chuẩn Hàm API thì sử dụng tốt trên mọi ngôn ngữ chỉ khác cách khai báo và sử dụng

8/ Chê VB6 nhưng VBA còn cùi gấp nhiều lần VB6 ... VBA và VB6 được phát triển cùng thời điểm với nhau nhưng VB6 xử lý nhiều thứ tốt hơn VBA

9/ Úp phía dưới là code VBA và VB6 cho ai thích thì dùng ... không thích bỏ qua
 

File đính kèm

  • Notifycation.rar
    1.3 MB · Đọc: 20
Lần chỉnh sửa cuối:
Vụ Toast Notification này trong VBA gọi thẳng cái API có sẳn trên máy của window luôn Shell32.dll cho nhanh (Shell_NotifyIconW), khỏi đi lòng vòng qua bên thứ 3.
Nói về sử dụng, thì nếu cái Toast Noti gặp các máy tính của những người không thích bị quấy rầy như tôi, tắt luôn cái "Notification" thì tèo, không còn tác dụng. Tôi thấy trong mấy cái ứng dụng, người ta thường sử dụng cái Toast giả thôi.

Screen Shot 2023-06-07 at 07.12.29.png

Tên thư viện đã đề cập ở trên, tìm kiếm trên mạng hoặc chát Gờ Pờ Tờ là ra... phần còn lại phụ thuộc chính khả năng của ai đó thôi. :D :v:
 
Lần chỉnh sửa cuối:
Vụ Toast Notification này trong VBA gọi thẳng cái API có sẳn trên máy của window luôn Shell32.dll cho nhanh (Shell_NotifyIconW), khỏi đi lòng vòng qua bên thứ 3.
Nói về sử dụng, thì nếu cái Toast Noti gặp các máy tính của những người không thích bị quấy rầy như tôi, tắt luôn cái "Notification" thì tèo, không còn tác dụng. Tôi thấy trong mấy cái ứng dụng, người ta thường sử dụng cái Toast giả thôi.

View attachment 291128

Tên thư viện đã đề cập ở trên, tìm kiếm trên mạng hoặc chát Gờ Pờ Tờ là ra... phần còn lại phụ thuộc chính khả năng của ai đó thôi. :D :v:
1/ Thử file bài số 1 của tôi tắt đi xem có tèo không

2/ cái của bạn thử chạy liên tục xem sao ??

3/ thêm thay đổi ICON mỗi lần chạy vào cho màu mè chút xem

4/ Tôi đã thử xóa khóa trong Registry rồi vẫn dùng tốt ... Lưu nó thành .reg chạy nó xong khởi động lại máy xem

Mã:
Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify\IconStreams]
[-HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify\PastIconsStream]


1686108831776.png
 
Lần chỉnh sửa cuối:
Chào mọi người lang thang trên mạng tôi thấy file có thể làm notifycation từ UserForm, tôi cố ý chỉnh về đúng vị trí cuối bên phải thì nó chưa hiện đúng ý mình. Mọi nguwoif có thể tham khảo nhé.1686185524558.png
 

File đính kèm

  • Hien form Pupop tren khay.xlsm
    96.5 KB · Đọc: 18
Chào mọi người lang thang trên mạng tôi thấy file có thể làm notifycation từ UserForm, tôi cố ý chỉnh về đúng vị trí cuối bên phải thì nó chưa hiện đúng ý mình. Mọi nguwoif có thể tham khảo nhé.View attachment 291166
User Form làm giả vậy cũng được rồi

1/ viết thêm code cho nó tự thoát sau vài giây chi đó xem sao

2/ Viết thêm hàm cho nó tự load ICON hay thay dổi ICON theo ý mình thích thay vì gán chết trên Form ( Nó đơn điệu và tẻ nhạt )

... thong thả bàn tiếp
 
Lần chỉnh sửa cuối:
Chào mọi người lang thang trên mạng tôi thấy file có thể làm notifycation từ UserForm, tôi cố ý chỉnh về đúng vị trí cuối bên phải thì nó chưa hiện đúng ý mình. Mọi nguwoif có thể tham khảo nhé.
Hay đó bạn. Làm bằng Userform (UF) thì muốn tuỳ biến kiểu gì chả được: thêm link vào Message, nút lệnh các kiểu...cứ nói gì tới Icon. Quan trọng là hiển thị nội dung thông báo tới người dùng đủ trên một cái không gian UF nhỏ hẹp chứ đừng tham lam Icon này nọ chiếm mất không gian cho nội dung chính.

- Giảm dòng code này xuống -10 là nó nằm sát cạnh cửa sổ Excel thôi.

Screen Shot 2023-06-08 at 11.23.47.png

Ứng dụng giờ người ta giả lập cái Toast Noti thôi chứ hơi đâu gọi và dùng cái hàm của Windows cho bất tiện khi người dùng tắt tính năng Notification. Lúc đó tính năng đó chỉ cho vào sọt "RÁC" chứ chẳng lẻ bắt người dùng phải thay đổi thiết lập hệ thống vì cái thông báo nhỏ xíu của ứng dụng (chưa kể can thiệp Registry nữa chứ).
- Để hiện hông báo cho người dùng có nhiều cách như: MessageBox, DoAlert, Userform...chỉ tốn chừng chục dòng code cho tới 1 trang code là cùng và chỉ tốn chừng vài chục kb và dùng cho cả Windows/Office 32bit và 64bit.
- Trong khi đó cái tool trên thì tốn
> 4M cho cái DLL chỉ để hiển thị cái thông báo. Nguyên cái thư viện hàm cho lập trình VBA (VBA7.DLL) chỉ có 4.3M. Mà bị tèo khi tắt Notification (bị tèo mà vẫn cố), muốn cưỡng ép chạy chắc tốn thêm một đống code :D.
- Người ta viết ứng dụng tìm cách làm sao file mình nhỏ, nhẹ nhất có thể nhưng vẫn đáp ứng đủ tính năng thì sẽ nghĩ ngay đến sự tào lao khi dùng 1 cái DLL nặng nề cho một tính năng đơn giản. Đôi khi ai đó nghĩ là viết cái DLL nặng cả chục M là ghê gớm mới chết.
- Dân lập trình chuyên nghiệp thì chọn ngôn ngữ nào để viết cái ứng dụng mà họ được đặt hàng một cách hiệu quả nhất (vì họ đã và phải biết nhiều ngôn ngữ) chứ không phải biết có một ngôn ngữ rồi tự sướng, Screen Shot 2023-06-08 at 11.10.30.png

Nghĩ lại buồn cười thật../*-*/. Chắc phải theo anh Vũ lên núi tu luyện 7, 7, 49 ngày mới ngộ ra được.
 
Lần chỉnh sửa cuối:
Vụ Toast Notification này trong VBA gọi thẳng cái API có sẳn trên máy của window luôn Shell32.dll cho nhanh (Shell_NotifyIconW), khỏi đi lòng vòng qua bên thứ 3.
Nói về sử dụng, thì nếu cái Toast Noti gặp các máy tính của những người không thích bị quấy rầy như tôi, tắt luôn cái "Notification" thì tèo, không còn tác dụng. Tôi thấy trong mấy cái ứng dụng, người ta thường sử dụng cái Toast giả thôi.

View attachment 291128

Tên thư viện đã đề cập ở trên, tìm kiếm trên mạng hoặc chát Gờ Pờ Tờ là ra... phần còn lại phụ thuộc chính khả năng của ai đó thôi. :D :v:
Ý bạn nói là cái này phải không?

1686275487966.png

Mã:
Sub BalloonTip_Test()
    Dim strCmd As String, strMsg As String
    strMsg = "Xin chào mình là thông báo t" & ChrW(7921) & " t" & ChrW(7855) & "t."
    strCmd = "powershell.exe -Command " & Chr(34) & "& { "
    strCmd = strCmd & "[reflection.assembly]::loadwithpartialname('System.Windows.Forms')"
    strCmd = strCmd & "; [reflection.assembly]::loadwithpartialname('System.Drawing')"
    strCmd = strCmd & "; $notify = new-object system.windows.forms.notifyicon"
    strCmd = strCmd & "; $notify.icon = [System.Drawing.SystemIcons]::Warning"
    strCmd = strCmd & "; $notify.visible = $true"
    strCmd = strCmd & "; $notify.showballoontip(5,'Thông báo!','" & strMsg & "',[system.windows.forms.tooltipicon]::None)"
    strCmd = strCmd & " }"
    CreateObject("WScript.Shell").Run strCmd, 0, True
End Sub
 
Theo tui thì ý @ongke0711 là cái này mới đúng.
1/ hay đó nhưng tắt Notify đi xong thoát ra chạy lại không được xem viết lại cái này chút là OK xem lại nó Nó loanh quanh trong đó thôi

2/ Xem File bài số 1 là thấy khi chạy code nó hiện lên xong nhìn vào đó có dấu x kế bên đó có 3 dấu ... bấm vào đó chọn turn off all notifications for windows là nó tắt đi chạy lại không báo gì nữa Nhưng sau đó thoát ra chạy lại là ok ( nó chỉ tắt lúc đó thôi )

3/ còn File của bạn là tắt luôn kể cả khi tắt File Excel chạy lại thì nó tắt vĩnh viễn luôn trừ khi bạn bật lại nó . Nếu chạy liên tục sẽ thấy Ở tray nó nháy nháy , chớp chớp
 
Theo tui thì ý @ongke0711 là cái này mới đúng.
Đúng là cái thư viện mà tôi đề cập ở trên đó bạn @giaiphap .
Bạn HLMT thì dùng PowerShell giống bạn Hesanbi trong bài này: link

Còn về vụ tắt Notification thì vô hệ thống mà tắt chứ ai rỗi hơi đi tắt Notification từng App. Còn đừng có hỏi tại sao tắt, tắt làm gì... vì MS đã thiết kế cái nút Bât và Tắt không phải để làm cảnh.
Tắt thử đi rồi xem ông nào còn hiện ra được mà cứ ta đây "chỉ tắt lúc đó thôi".

Screen Shot 2023-06-09 at 19.05.16.png

Một điểm trừ (đến thời điểm bài viết này) của vụ dùng Notification trong Excel (chỉ nói trong Excel) là nó còn lưu lại cái icon (hình vuông đen) trên thanh task bar như hình mặc dù đã thoát Excel. Nếu dùng Power Shell thì không bị.

Screen Shot 2023-06-09 at 19.32.11.png Screen Shot 2023-06-09 at 19.32.26.png
 
Đúng là cái thư viện mà tôi đề cập ở trên đó bạn @giaiphap .
Bạn HLMT thì dùng PowerShell giống bạn Hesanbi trong bài này: link

Còn về vụ tắt Notification thì vô hệ thống mà tắt chứ ai rỗi hơi đi tắt Notification từng App. Còn đừng có hỏi tại sao tắt, tắt làm gì... vì MS đã thiết kế cái nút Bât và Tắt không phải để làm cảnh.
Tắt thử đi rồi xem ông nào còn hiện ra được mà cứ ta đây "chỉ tắt lúc đó thôi".

View attachment 291256

Một điểm trừ (đến thời điểm bài viết này) của vụ dùng Notification trong Excel (chỉ nói trong Excel) là nó còn lưu lại cái icon (hình vuông đen) trên thanh task bar như hình mặc dù đã thoát Excel. Nếu dùng Power Shell thì không bị.

View attachment 291258 View attachment 291259
Xem hình đó là chạy File của Tôi bài số 1 ... Tôi nói rất rõ bài 13 rồi chuyện tắt ở đâu không quan trọng chỉ tắt để test code

Khi tắt lúc đó cả File của bài 11 và bài số 1 đều không chạy được . nhưng của tôi thoát Excel ra mở lại chạy bình thường còn bài 11 là tắt luôn

còn bài số 4 chụp hình to đó không nhìn + tắt trong Registry

Cố tình nói sai lệch đi thì đúng hơn .Hãy xem lại đi
 
1/ hay đó nhưng tắt Notify đi xong thoát ra chạy lại không được xem viết lại cái này chút là OK xem lại nó Nó loanh quanh trong đó thôi

2/ Xem File bài số 1 là thấy khi chạy code nó hiện lên xong nhìn vào đó có dấu x kế bên đó có 3 dấu ... bấm vào đó chọn turn off all notifications for windows là nó tắt đi chạy lại không báo gì nữa Nhưng sau đó thoát ra chạy lại là ok ( nó chỉ tắt lúc đó thôi )

3/ còn File của bạn là tắt luôn kể cả khi tắt File Excel chạy lại thì nó tắt vĩnh viễn luôn trừ khi bạn bật lại nó . Nếu chạy liên tục sẽ thấy Ở tray nó nháy nháy , chớp chớp
1. Tui chỉ tham khảo code trên mạng theo lời gợi ý của @ongke0711 thôi, còn cá nhân hóa theo ý mình tui thấy không cần thiết vì tui đâu có sử dụng nó đâu, chỉ là tham khảo và trả lời bài của @Hai Lúa Miền Tây thôi.
2. Theo tui nghĩ đã tắt rồi tức là không muốn cho nó hiển thị mà nó cứ hiển thị hoài là chuyện vô cùng sai.
3. Tui thấy dùng Form sẽ có nhiều cái hay hơn vì có thể tui vẫn dùng Form để thông báo. Cái nửa chẳng ai lại thông báo liên tục như vậy đâu.
Cái của tui lại thấy hay hơn vì nó có thể thông báo nhiều lần cùng lúc, trong khi Notify hiển thị thông báo này thì không thể hiển thị thông báo khác (Chỉ là cá nhân tui nhận thấy).
Cách của tui:
Hinh.png
Còn vấn đề tranh cãi ai đúng ai sai thì tui chịu, vì bản thân chỉ là học lóm từ các thành viên trên diễn đàn nên về lý thuyết thì tui thua vậy.
 
Lần chỉnh sửa cuối:
1. Tui chỉ tham khảo code trên mạng theo lời gợi ý của @ongke0711 thôi, còn cá nhân hóa theo ý mình tui thấy không cần thiết vì tui đâu có sử dụng nó đâu, chỉ là tham khảo và trả lời bài của @Hai Lúa Miền Tây thôi.
2. Theo tui nghĩ đã tắt rồi tức là không muốn cho nó hiển thị mà nó cứ hiển thị hoài là chuyện vô cùng sai.
3. Tui thấy dùng Form sẽ có nhiều cái hay hơn vì có thể tui vẫn dùng Form để thông báo. Cái nửa chẳng ai lại thông báo liên tục như vậy đâu.
Cái của tui lại thấy hay hơn vì nó có thể thông báo nhiều lần cùng lúc, trong khi Notify hiển thị thông báo này thì không thể hiển thị thông báo khác (Chỉ là cá nhân tui nhận thấy).
Cách của tui:
View attachment 291276
Còn vấn đề tranh cãi ai đúng ai sai thì tui chịu, vì bản thân chỉ là học lóm từ các thành viên trên diễn đàn nên về lý thuyết thì tui thua vậy.
File xịn xò quá, chú @giaiphap chia sẻ cho con dùng với.
 
Tôi nghi ngờ nhiều thứ mới kiểm tra lại như sau ... lấy File bài số 1 , code bài số 10 File bài số 11 làm test

Khi test file bài số 11 như sau:
1/ Mới tải về thử chạy dùng tốt

2/ khi chạy code nó hiện lên xong nhìn vào đó có dấu x kế bên đó có 3 dấu ... bấm vào đó chọn turn off all notifications for windows là nó tắt đi

xong chạy lại không được ( xong thoát Excel chạy lại cũng tịt )

3/ Khi tắt như mô tả bài số 4 của mục số 4 mở lại Excel nó cũng tịt luôn

Khi test code bài số 10 như sau: code bài số 10 y trang bài số 11 tịt sạch

Khi test File bài số 1 như sau:


1/ Tắt tất cả các mục như trên khi file Excel còn chạy chạy thì không sử dụng được .
chỉ khác file bài số 11 và code bài số 10 là sau khi tắt thoát Excel ra xong mở lại Excel chạy lại bình thường

2/ Chốt lại : Tất cả các cách tắt trên là tạm thời còn chưa tắt hết nên file bài số 1 sau khi thoát Excel ra mở lại chạy bình thường. còn code bài số 10 và file bài số 11 là tịt

3/ Còn 1 cách tắt khác nữa nó tắt sạch sẽ luôn kể cả File file số 1 cũng tịt ... Tìm đi là thấy
có mỗi test code thôi mà cũng nói không chính xác nó chạy trong trường hợp nào và không chạy trong trường hợp nào . xong ... cào bằng cả thì làm sao code khá lên được
 
Lần chỉnh sửa cuối:

File đính kèm

  • Hien form Pupop tren khay.xlsm
    40.8 KB · Đọc: 14
..............................................
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom