⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitor.c

📁 linux下才C编程
💻 C
📖 第 1 页 / 共 2 页
字号:
   /*if (!path_currently_selected)
  {
     g_print ("%s is going to be selected.\n", pid);*/
     create_window2(pid);
  /*}
  else
{
    g_print ("%s is going to be unselected.\n", pid);
   }*/
   free(pid);}
   return TRUE; /* allow selection state to change */
}
gint get_cpu_util1(GtkWidget *widget){    /*CPU使用率曲线绘制函数*/

     gdk_draw_line(pixmap,my_gc_red,shao,mm,shao+10,util);
     gtk_widget_queue_draw_area(widget,shao,util,10,util-mm);
    
     shao+=10;
      mm=util;
      
     
      return 1;   
}

int my_configure_event(GtkWidget *widget , GdkEventConfigure *event)  /*绘图区事件函数*/
{
      if(pixmap)
          g_object_unref(pixmap);
      pixmap = gdk_pixmap_new(widget->window ,
                  widget->allocation.width ,
                  widget->allocation.height ,
                  -1);
      gdk_draw_rectangle(pixmap , widget->style->white_gc ,
                  TRUE , 0 , 0 ,
                  widget->allocation.width ,
                  widget->allocation.height);

      my_gc_red = gdk_gc_new(widget->window);
      color.red = 30000;
      color.green = 0;
      color.blue = 30000;
      gdk_gc_set_rgb_fg_color(my_gc_red , &color);   

      return 0;
}

int my_expose_event(GtkWidget *widget , GdkEventExpose *event , gpointer data)   /*绘图区事件函数*/
{
      gdk_draw_drawable(widget->window ,
              widget->style->fg_gc[GTK_WIDGET_STATE(widget)] ,
              pixmap , 0 , 0 , 0 , 0 ,
              widget->allocation.width ,
              widget->allocation.height);   
              gtk_timeout_add(2000,(GtkFunction)get_cpu_util1,widget);
      return 0;
}
void show_label( GtkWidget *label36){
            char *s=(char *)malloc(2000*sizeof(char));
            strcpy(s,"%0");
            strcat(s,"\n\n\n\n");
            strcat(s,"%100");
             gtk_label_set_text(GTK_LABEL(label36),s);
  }    
GtkWidget*
create_window1 (void){
  GtkWidget *window1;
  GtkWidget *vbox1;
  GtkWidget *menubar1;
  GtkWidget *menuitem1;
  GtkWidget *menu1;
  GtkWidget *new_item;
  GtkWidget *open_item;
  GtkWidget *menuitem2;
  GtkWidget *menu2;
  GtkWidget *t_1;
  GtkWidget *c_1;
  GtkWidget *p_1;
  GtkWidget *d_1;
  GtkWidget *menuitem3;
  GtkWidget *menu3;
  GtkWidget *menuitem4;
  GtkWidget *menu4;
  GtkWidget *about1;
  GtkWidget *menuitem5;
  GtkWidget *menu5;
  GtkWidget *reboot_item;
  GtkWidget *shutdown_item;
  GtkWidget *notebook1;
  GtkWidget *empty_notebook_page;
  GtkWidget *text;

  
  GtkWidget *label4;
  GtkWidget *frame1;
  GtkWidget *alignment1;
  GtkWidget *vbox2;
  GtkWidget *scrolledwindow1;
  GtkWidget *treeview1;

  GtkWidget *hbox1;
  GtkWidget *hbox2;
  GtkWidget *button3;
  GtkWidget *button2;
  GtkWidget *button1;

  GtkWidget *label5;
  GtkWidget *vbox3;
  GtkWidget *label6;
  GtkWidget *frame2;
  AtkObject *atko;
  GtkWidget *alignment2;
  GtkWidget *scrolledwindow2;
 GtkWidget *viewport1;
 GtkWidget *label32;
 GtkWidget *label29;
GtkWidget *label30;
GtkWidget *drawing_area;
  GtkWidget *label20;
  GtkWidget *label7;
GtkWidget *label35;
 GtkWidget*hbox3;
GtkWidget *label36;
  GtkTreeSelection *selection;
  /*int i,j;*/
  GtkAccelGroup *accel_group;
 
  

  accel_group = gtk_accel_group_new ();

  window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);        /*创建主窗口*/
  gtk_window_set_title (GTK_WINDOW (window1), "任务管理器");      
  gtk_window_set_default_size(GTK_WINDOW(window1), 500,500);
   g_signal_connect(G_OBJECT(window1),"delete_event",G_CALLBACK(gtk_main_quit),NULL);

  vbox1 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox1);
  gtk_container_add (GTK_CONTAINER (window1), vbox1);

  menubar1 = gtk_menu_bar_new ();
  gtk_widget_show (menubar1);
  gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0);

  menuitem1 = gtk_menu_item_new_with_mnemonic ("文件");                           /*菜单各项建立过程*/
  gtk_widget_show (menuitem1);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);

  menu1 = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menu1);

  new_item = gtk_image_menu_item_new_from_stock ("gtk-new", accel_group);
  gtk_widget_show (new_item);
  gtk_container_add (GTK_CONTAINER (menu1), new_item);

 open_item = gtk_image_menu_item_new_from_stock ("gtk-open", accel_group);
  gtk_widget_show (open_item);
  gtk_container_add (GTK_CONTAINER (menu1), open_item);


  menuitem2 = gtk_menu_item_new_with_mnemonic ("编辑");
  gtk_widget_show (menuitem2);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem2);

  menu2 = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menu2);

  t_1 = gtk_image_menu_item_new_from_stock ("gtk-cut", accel_group);
  gtk_widget_show (t_1);
  gtk_container_add (GTK_CONTAINER (menu2), t_1);

  c_1 = gtk_image_menu_item_new_from_stock ("gtk-copy", accel_group);
  gtk_widget_show (c_1);
  gtk_container_add (GTK_CONTAINER (menu2), c_1);

  p_1 = gtk_image_menu_item_new_from_stock ("gtk-paste", accel_group);
  gtk_widget_show (p_1);
  gtk_container_add (GTK_CONTAINER (menu2), p_1);

  d_1 = gtk_image_menu_item_new_from_stock ("gtk-delete", accel_group);
  gtk_widget_show (d_1);
  gtk_container_add (GTK_CONTAINER (menu2), d_1);

  menuitem3 = gtk_menu_item_new_with_mnemonic ("查看");
  gtk_widget_show (menuitem3);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem3);

  menu3 = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menu3);

  menuitem4 = gtk_menu_item_new_with_mnemonic ("帮助");
  gtk_widget_show (menuitem4);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);

  menu4 = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menu4);

  about1 = gtk_menu_item_new_with_mnemonic ("关于");
  gtk_widget_show (about1);
  gtk_container_add (GTK_CONTAINER (menu4), about1);
  
   menuitem5=gtk_menu_item_new_with_mnemonic("关机");
   gtk_widget_show(menuitem5);
   gtk_container_add(GTK_CONTAINER(menubar1),menuitem5);
   
   menu5=gtk_menu_new();
   gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem5),menu5);
   
   reboot_item=gtk_menu_item_new_with_mnemonic("重启");
   gtk_widget_show(reboot_item);
   gtk_container_add(GTK_CONTAINER(menu5),reboot_item);

  shutdown_item=gtk_menu_item_new_with_mnemonic("关机");
   gtk_widget_show(shutdown_item);
   gtk_container_add(GTK_CONTAINER(menu5),shutdown_item);    
   
  notebook1 = gtk_notebook_new ();                                              /*创建笔记本*/
  gtk_widget_show (notebook1);
  gtk_box_pack_start (GTK_BOX (vbox1), notebook1, TRUE, TRUE, 0);

  empty_notebook_page = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (empty_notebook_page);
  gtk_container_add (GTK_CONTAINER (notebook1), empty_notebook_page);
 
   text=gtk_label_new(NULL);                                  /*显示系统信息*/
   gtk_widget_show(text);
   gtk_box_pack_start(GTK_BOX(empty_notebook_page),text,TRUE,TRUE,0);
   show_sys_info(text);
   
  
   
                          


  label4 = gtk_label_new ("系统版本信息");                                  
  gtk_widget_show (label4);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label4);


  frame1 = gtk_frame_new (NULL);
  gtk_widget_show (frame1);
  gtk_container_add (GTK_CONTAINER (notebook1), frame1);
  gtk_container_set_border_width (GTK_CONTAINER (frame1), 13);
  gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_NONE);

  alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1);
  gtk_widget_show (alignment1);
  gtk_container_add (GTK_CONTAINER (frame1), alignment1);
  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment1), 0, 0, 12, 0);

  vbox2 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox2);
  gtk_container_add (GTK_CONTAINER (alignment1), vbox2);

  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
  gtk_widget_show (scrolledwindow1);
  gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow1, TRUE, TRUE, 0);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN);

   treeview1 = gtk_tree_view_new ();            /*创建进程树表*/
   gtk_widget_show (treeview1);
   gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview1);
 /* i=show_pro_info();*/
   arrange_tree_view1(treeview1);
   show_proc(treeview1);
   gtk_timeout_add(15000,(GtkFunction)show_proc,treeview1);
    // set model
  /*  GtkTreeModel *store1 = create_model1();
    gtk_tree_view_set_model ( GTK_TREE_VIEW(treeview1),  store1);*/
   /* for(j=0;j<i;j++){
        model_data_new1(store1,pro[i].comm,pro[i].task_state,pro[i].pid,pro[i].ppid,pro[i].pgid);
    }*/
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview1));
     gtk_tree_selection_set_select_function(selection, view_selection_func, NULL, NULL);  

   
 


  hbox1 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox1);
  gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);

  hbox2 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox2);
  gtk_box_pack_start (GTK_BOX (hbox1), hbox2, TRUE, TRUE, 0);

  button3 = gtk_button_new_with_mnemonic ("查看进程");
  gtk_widget_show (button3);
  gtk_box_pack_start (GTK_BOX (hbox2), button3, FALSE, FALSE, 0);
   g_signal_connect(G_OBJECT(button3), "clicked", G_CALLBACK(cb_button),NULL);  


  button2 = gtk_button_new_with_mnemonic ("结束任务");
  gtk_widget_show (button2);
  gtk_box_pack_start (GTK_BOX (hbox1), button2, FALSE, FALSE, 0);

  button1 = gtk_button_new_with_mnemonic ("退出");
  gtk_widget_show (button1);
  gtk_box_pack_start (GTK_BOX (hbox1), button1, FALSE, FALSE, 0);
  g_signal_connect(G_OBJECT(button1), "clicked", G_CALLBACK(gtk_main_quit),NULL);;

  clocker = gtk_label_new (NULL);
  gtk_widget_show (clocker);
  gtk_frame_set_label_widget (GTK_FRAME (frame1),clocker);
  gtk_label_set_use_markup (GTK_LABEL (clocker), TRUE);
  gtk_timeout_add(1000,(GtkFunction)timeout_callback,clocker);

 

  label5 = gtk_label_new ("进程");
  gtk_widget_show (label5);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label5);

  vbox3 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox3);
  gtk_container_add (GTK_CONTAINER (notebook1), vbox3);

label35=gtk_label_new("cpu使用率曲线图");
  gtk_widget_show (label35);
  gtk_box_pack_start (GTK_BOX (vbox3), label35, FALSE, FALSE, 0);

  hbox3 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox3);
  gtk_box_pack_start (GTK_BOX (vbox3), hbox3, TRUE, TRUE, 0);

  label36 = gtk_label_new (NULL );
  gtk_widget_show (label36);
  gtk_box_pack_start (GTK_BOX (hbox3), label36, FALSE, FALSE, 0);
  show_label(label36);

   drawing_area=gtk_drawing_area_new();                   /*创建绘图区*/
  gtk_widget_show(drawing_area);
  gtk_box_pack_start(GTK_BOX(hbox3),drawing_area,TRUE,TRUE,0);
 gtk_signal_connect(GTK_OBJECT(drawing_area),"expose_event",G_CALLBACK(my_expose_event) , NULL);
  g_signal_connect(G_OBJECT(drawing_area) , "configure_event" ,
              G_CALLBACK(my_configure_event) , NULL);
  gtk_widget_set_events(drawing_area,GDK_EXPOSURE_MASK);
 

 label29 = gtk_label_new ("label29");
  gtk_widget_show (label29);
  gtk_box_pack_start (GTK_BOX (vbox3), label29, FALSE, FALSE, 0);
  gtk_widget_set_size_request (label29, -1, 100);
 gtk_timeout_add(1000,(GtkFunction)get_cpu_util,label29); 

  label30 = gtk_label_new ("label30");
  gtk_widget_show (label30);
  gtk_box_pack_start (GTK_BOX (vbox3), label30, FALSE, FALSE, 0);
  gtk_widget_set_size_request (label30, -1, 210);
   gtk_timeout_add(1000,(GtkFunction)show_mem_info,label30);



 label6 = gtk_label_new ("性能");
  gtk_widget_show (label6);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label6);

 

  frame2 = gtk_frame_new (NULL);
  gtk_widget_show (frame2);
  gtk_container_add (GTK_CONTAINER (notebook1), frame2);
  gtk_container_set_border_width (GTK_CONTAINER (frame2), 9);
  gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_NONE);

  alignment2 = gtk_alignment_new (0.5, 0.5, 1, 1);
  gtk_widget_show (alignment2);
  gtk_container_add (GTK_CONTAINER (frame2), alignment2);
  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment2), 0, 0, 12, 0);

  scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
  gtk_widget_show (scrolledwindow2);
  gtk_container_add (GTK_CONTAINER (alignment2), scrolledwindow2);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN);

  viewport1 = gtk_viewport_new (NULL, NULL);
  gtk_widget_show (viewport1);
  gtk_container_add (GTK_CONTAINER (scrolledwindow2), viewport1);

  label32 = gtk_label_new (NULL);            /*显示硬盘信息*/
  gtk_widget_show (label32);
  gtk_container_add (GTK_CONTAINER (viewport1), label32);
  show_disk(label32);
  gtk_timeout_add(10000,(GtkFunction)show_disk,label32);   
              
  label20 = gtk_label_new ("文件系统");
  gtk_widget_show (label20);
  gtk_frame_set_label_widget (GTK_FRAME (frame2), label20);
  gtk_label_set_use_markup (GTK_LABEL (label20), TRUE);

  label7 = gtk_label_new ("文件系统");
  gtk_widget_show (label7);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), label7);


  
       

  g_signal_connect ((gpointer) new_item, "activate",
                    G_CALLBACK (on_new_item_activate),
                    NULL);
  g_signal_connect ((gpointer)open_item, "activate",
                    G_CALLBACK (on_open_item_activate),
                    NULL);
  g_signal_connect ((gpointer)t_1, "activate",
                    G_CALLBACK (on_t_1_activate),
                    NULL);
  g_signal_connect ((gpointer) c_1, "activate",
                    G_CALLBACK (on_c_1_activate),
                    NULL);
  g_signal_connect ((gpointer) p_1, "activate",
                    G_CALLBACK (on_p_1_activate),
                    NULL);
  g_signal_connect ((gpointer) d_1, "activate",
                    G_CALLBACK (on_d_1_activate),
                    NULL);
  g_signal_connect ((gpointer) about1, "activate",
                    G_CALLBACK (on_about1_activate),
                    NULL);
 g_signal_connect((gpointer)reboot_item,"activate",G_CALLBACK(on_reboot_item_activate),NULL);
 g_signal_connect((gpointer)shutdown_item,"activate",G_CALLBACK(on_shutdown_item_activate),NULL); 

  atko = gtk_widget_get_accessible (frame2);
  atk_object_set_name (atko, "frame2");
 gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group);
   
   return window1;
}
int
main (int argc, char *argv[])
{
  GtkWidget *window1;
  gtk_set_locale ();
  gtk_init (&argc, &argv);
  window1 = create_window1 ();
  gtk_widget_show (window1);
  gtk_main ();
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -